大家能帮忙看一下这一步是为什么吗,谢谢

#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;}将上一次读取的内容清空是有必要的。

为你下一次输入字符做初始化