论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语句后面多了个分号(;),因此程序就“死”在这里了,后面更不会输出了。

这篇应该会持续更新,但是估计不定期。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐