用SCANF 输入字符的话。好像是遇空格就认为接束了。而用GETCHAR()是遇回车才结束。不知道有没有记错。
#include <stdio.h> #include <stdlib.h> #include<string.h> int main() { int Word=0,word=0,space=0,number=0,others=0; char *p; int i; p=(char *)malloc(sizeof(char)*50); if(p==NULL) return 0; printf("请输入一段文字:"); gets(p); /* 朋友说要用getchar()完成输入, 为什么呢? 很费解? 百度看不懂*/ for(i=0;*(p+i)!='\0';i++) { if((*(p+i)>='A')&&(*(p+i)<='Z')) Word++; else if((*(p+i)>='a')&&(*(p+i)<='z')) word++; else if((*(p+i)>='0')&&(*(p+i)<='9')) number++; else if((*(p+i)==32)) /* 判断条件没错吧,为什么就是space始终是初始化的结果*/ space++; else others++; /* 这个很调皮,输入的时候有时候突然能统计上,突然就统计不上了*/ } printf("%d\n%d\n%d\n%d\n%d\n",Word,word,space,number,others); free(p); return 0; }