我在使用循环时遇到问题,我不知道为什么,但是循环永远不会结束。
int main(int argc, char *argv[])
{
int j;
char s[2];
for(j=1;j<=3;j++)
{
sprintf(s,"s%d",j);
printf("%s", s);
}
system("PAUSE");
return 0;
}
我认为循环应在控制台中显示s1s2s3。
最佳答案
char s[2];
应该为char s[3];
,否则您将获得缓冲区溢出。
Abhineet解释了为什么必须进行更改。但是,为了证实他的回答,以下是标准中的相关部分。
关于c - C中的sprintf,循环永无止境,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20517852/