#include<stdio.h>
int main(){
char a[1000] = {0};
while(gets(a) != NULL){
int number = 0 ;
int i = 0;
for(i = 0; a[i] != 0; i++){
if((a[i] >= 'A' && a[i] <= 'Z') || ( a[i] >= 'a' && a[i] <= 'z')){
number++;
for(; (a[i] != ' ' && a[i] != 0) ; i++){
;
}
}
}
printf("%d\n",number);
for(i = 0; a[i] != 0;i++){
a[i] = 0;
}
}
return 0;
}
此题为求单词数
for(i = 0; a[i] != 0;i++){
a[i] = 0;
}
其中这步我不太明白,为什么要有,如果去掉的话就是Compile Error 麻烦大家了
将上一次读取的字符串清空,避免出现上一次的字符串遗留到下一次字符串中,比如:
第一次读取的字符串是"ABCDEFGHIJKLMN";
第二次读取的字符串是"123"
第二次读取的字符串的长度小于第一次的,由于两次读取用了同一块内存,所以第二次读取的时候,内存中的字符串可能就是"123DEFGHIJKLMN",所以通过执行for(i = 0; a[i] != 0;i++){a[i] = 0;}将上一次读取的内容清空是有必要的。
为你下一次输入字符做初始化