今天scanf输入字符串时候,比如输入 Today is 2008/8/8
经过调试发现,遇到空格被scanf认为输入完成了,实际上这个字符串输入的是Today
经过查找问题,解决方法有两个:(代码有注释 )
#include <stdio.h>
#include <string.h>
int main()
{
int upper=0,lower=0,digit=0,space=0,other=0,i=0;
char *p,s[20];
printf("input string: \n");
//scanf("%s",s); 这种方法输入字符串有空格不行的
// gets(s); 解决方法之一
scanf("%[^\n]",s); //解决方法之二
p=s;
while(*p!='\0')
{
if(('A'<=*p)&&(*p<='Z'))
upper++;
else if(('a'<=*p)&&(*p<='z'))
lower++;
else if(*p==' ')
space++;
else if((*p<='9')&&(*p>='0'))
digit++;
else
other++;
p++;
}
printf("upper case:%d lower case:%d",upper,lower);
printf(" space:%d digit:%d other:%d\n",space,digit,other);
return 0;
}