大佬帮忙看看这个程序哪出问题了?

#include<stdio.h>
#include<string.h>
int main()
{
	char str[40];
    gets(str);
	int n=strlen(str),zimu=0,shuzi=0,kongge=0,qita=0,i;
	
	for(int i=0;i<n;i++)
	{
		if(str[i]<='z'&&str[i]>='a'||str[i]<='Z'&&str[i]>='A')
		
			zimu++;
		
        else if(str[i]<='9'&&str[i]>='0')
		
			shuzi++;
		
        else if(str[i]==32)
		
			kongge++;
		
        else
        qita++;
	}
	printf("zimu=%d\nshuzi=%d\nkongge=%d\nqita=%d\n",zimu,shuzi,kongge,qita);
	return 0;
}

题目是:

统计字符串中字母、数字、空格和其他字符的个数。

输入格式:

在一行中输入长度不超过40的字符串。

输出格式:

第一行中输出“zimu=x“

第二行中输出“shuzi=y“

第三行中输出“kongge=z”,

第四行中输出“qita=m” 所有结果均原样输出,没有列宽控制。

 

为什么无法运行呢

代码没有问题啊,可以运行

所谓无法运行,是编译有错,还是没有输出,还是输出结果不对呢?

你用strlen来计算str的长度是有问题的,strlen是计算从第一个字节到后续第一个0值为止的串长度,如果str里没有0,那么就不知道是多少了。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y