- 论坛徽章:
- 0
|
输入函数问题!
不是你使用scanf有错误,而是
while(*p!='\n')
这里有错误,不信的话你现将从while (*p = '\n')开始的程序注释掉,在编译运行看一下.
这实际原因是因为*p永远都不可能等于'\n';
scanf将字符串读入时,会忽略掉后面的换行符,所以这是个死循环,指针不停移动,当然会出现段异常了.
只要把循环条件修改成while (*p != '=0')就可以了.代码修改后就是;
- #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[i]=0;
- i=0;
- while((s[i]=getchar())!='\n')i++;
- */
- scanf("%s", s);
- printf("%s", s); //在这里加一句输出语句就可以看出scanf没有读入'\n'符号.
- p=s;
- while(*p!='\0')
- {
- 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++;
- }
- }
复制代码 |
|