字符串的输入问题
#include<stdio.h>int main()
{
int a,b,c,d;
int i=0;
char *p;
scanf("%s",p); //换成gets(p)和fget(p,10,stdin)有什么区别?还等同于char p getchar()吗
while(*p!='\0')
{
if(*p>='a'&&*p<='Z'||*p>='a'&&*p<='z')
a++;
else if(*p>='0'&&*p<='9')
b++;
else if(*p==' ')
c++;
else d++;
p++;
}
printf("%d %d %d %d",a,b,c,d);
}
没有输出 哪里出错了 fgets不是从文件里获取一行字符串吗。。。 本帖最后由 墨羽岚 于 2020-3-9 15:39 编辑
代码错误太多了。。。{:10_247:}
首先abcd都没有赋初值,怎么输出;
然后判断是否是字母那里第一个a应当改为A 本帖最后由 jackz007 于 2020-3-9 15:51 编辑
#include <stdio.h>
#include <stdlib.h>
int main()
{
char * p ;
int a , b , c , d , i ;
if((p = (char *) malloc(256))) {
p = gets(p) ;
for(a = 0 , b = 0 , c = 0 , d = 0 , i = 0 ; * (p + i) ; i ++) {
if((*(p + i) >= 'A' && *(p + i) <= 'Z') || (*(p + i) >= 'a' && *(p + i) <= 'z')) a ++ ;
else if(*(p + i) >= '0' && *(p + i) <= '9') b ++ ;
else if(*(p + i) == ' ') c ++ ;
else d ++ ;
}
printf("%d %d %d %d" , a , b , c , d) ;
free(p) ;
} else {
fprintf(stderr , "Error : malloc()\n") ;
}
}
不可以用 scanf() ,空格字符 ' ' 是 scanf() 默认的多个输入项之间的分隔符,因此,用 scanf() 无法跨过空格符获取完整的字符串输入。 首先 指针*p是个野指针,不能这样使用的。
页:
[1]