论C语言没有输出的可能问题
·
论C语言没有输出的可能问题
1、今天帮别人找bug,说是程序没有输出。
题目如下:
错误代码如下:
#include<stdio.h>
void getDigits(char* c1,char* c2)
{
int i=0,j=0;
while(s1[i]!='\0');
{
if(s1[i]>'0'&&s1[i]<'9')
{
s2[j]=s1[i];
j++;
}
i++;
}
}
int main()
{
char s1[20],s2[20],*p1=s1,*p2=s2;
printf("Please input a character string\n");
gets(s1);
getDigits(p1,p2);
puts(s1);
puts(s2);
return 0;
}
这个的结果呢,就是输入了字符串之后,就不动了,卡在那里。(不是无限循环)
关于这个问题呢,我看了一会儿,运行了一下,直接定位到getDigits函数。
一开始我以为是判断语句没有找到\0所以循环不停止。
后来加入了一行语句在while循环中
printf("1\n");
结果发现还是和之前一样。按理说如果是卡在循环,没找到\0的话,应该是重复输出1死循环。所以在此判断是程序进行到while(s1[I]!=’\0’)的时候出了问题。
我们再回到程序,果然,while语句后面多了个分号(;),因此程序就“死”在这里了,后面更不会输出了。
这篇应该会持续更新,但是估计不定期。
更多推荐
已为社区贡献2条内容
所有评论(0)