永发信息网

看看我程序的问题

答案:4  悬赏:30  手机版
解决时间 2021-05-01 20:16
  • 提问者网友:伴风望海
  • 2021-05-01 16:01

#include<stdio.h>
#include<string.h>
void main()
{
char c[100];
int i,j=0,k=0,n=0,m=0;
printf("请输入您需要统计的字符");
scanf("%s",c);
printf("%d",strlen(c));
for (i=0;i<strlen(c);i++)
{
if (c[i]>=65&&c[i]<=90||c[i]>=97&&c[i]<=122)
j++;
if(c[i]>=48&&c[i]<=57)
k++;
if (c[i]==32)
n++;
}
m=strlen(c)-j-k-n;
printf("英文字符的个数是%d\n",j);
printf("数 字的个数是%d\n",k);
printf("空格字符的个数是%d\n",n);
printf("其它字符的个数是%d\n",m);

我想知道一下为什么我输入字符的时候只要输入一个空格,空格后面的字符就不能读取进去了呢?

最佳答案
  • 五星知识达人网友:怀裏藏嬌
  • 2021-05-01 16:46

因为scanf()读入字符串时会跳过空格、回车,


而只有读字符(%c)才读空格和回车,这与getchar()就没区别了。


一般用gets() 代替scanf()就行了

全部回答
  • 1楼网友:掌灯师
  • 2021-05-01 19:47
因为scanf()读入字符串时会跳过空格、回车.
  • 2楼网友:蓝房子
  • 2021-05-01 19:20
这个是因为scanf("%s",c);出错了 这种读取字符串是遇到空格就完了 正如楼上所说把这句换成gets(c)就ok了
  • 3楼网友:鱼芗
  • 2021-05-01 18:16
遇到空格,它会以为是结束的标志。解决的办法是用gets(参数),或者scanf("[^\n]",参数);//;希望对你有帮助
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯