免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1078 | 回复: 3
打印 上一主题 下一主题

[函数] 输入函数问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-15 17:32 |只看该作者 |倒序浏览
#include"stdio.h"
main()
{int a=0,b=0,c=0,d=0,e=0,i;
char *p,s[20];
printf("请输入一行字符:";
for(i=0;i<20;i++);
s=0;
i=0;
while((s=getchar())!='\n')i++;

p=&s[0];
while(*p!='\n')
{if(('A'<= *p)&&(*p <= 'Z'))
++a;
else if(('a'<=*p)&&(*p<='z'))
++b;
else if(*p==' ')
++c;
else if((*p<='9')&&(*p>;='0'))
++d;
else ++e;
p++;

}

小弟弟我对这个程序有点不明白,为什么要用getchar()输入函数呢?
我把它改成用scanf()函数输入,就会出现错误,不过编译能通过
希望好手给我说说,谢谢了啊!

论坛徽章:
0
2 [报告]
发表于 2005-07-15 17:34 |只看该作者

输入函数问题!

就是红色的部分!为什么把它改成scanf("%s",s);
就在执行的时候e=18,而且不管输入什么e都是等于18!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2005-07-15 17:36 |只看该作者

输入函数问题!

>;>;for(i=0;i<20;i++);

没看几行 看到for循环后面竟然有个;

论坛徽章:
0
4 [报告]
发表于 2005-07-15 18:00 |只看该作者

输入函数问题!

不是你使用scanf有错误,而是
while(*p!='\n')
这里有错误,不信的话你现将从while (*p = '\n')开始的程序注释掉,在编译运行看一下.
这实际原因是因为*p永远都不可能等于'\n';
scanf将字符串读入时,会忽略掉后面的换行符,所以这是个死循环,指针不停移动,当然会出现段异常了.
只要把循环条件修改成while (*p != '=0')就可以了.代码修改后就是;

  1. #include"stdio.h"
  2. main()
  3. {
  4.         int a=0,b=0,c=0,d=0,e=0,i;
  5.         char *p,s[20] = "";
  6.         printf("请输入一行字符:");
  7.        
  8. /*
  9.         for(i=0;i<20;i++);
  10.         s[i]=0;
  11.         i=0;
  12.         while((s[i]=getchar())!='\n')i++;
  13. */
  14.         scanf("%s", s);
  15.         printf("%s", s);        //在这里加一句输出语句就可以看出scanf没有读入'\n'符号.
  16.         p=s;
  17.         while(*p!='\0')
  18.         {
  19.                 if(('A'<= *p)&&(*p <= 'Z'))
  20.                         ++a;
  21.                 else if(('a'<=*p)&&(*p<='z'))
  22.                         ++b;
  23.                 else if(*p==' ')
  24.                         ++c;
  25.                 else if((*p<='9')&&(*p>;='0'))
  26.                         ++d;
  27.                 else ++e;
  28.                         p++;
  29.         }

  30. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP