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

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

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值