1. 函数gets的定义如下,当读入一个字符串时,自动将字符串末尾的换行符替换为字符'\0',所以判断字符数组是否读完,应判断当前字符是否等于'\0'
char *gets(char *s)
gets 函数把下一个输入行读入到数组s 中,并把末尾的换行字符替换为字符‘\0’。它返回数组s。
2. 你使用char a[200]={0};实际上是将字符数组中每个字符都初始化为'\0',所以后面while判断的时候应该使用是否等于'\0'进行判断。注:和1有点重复了。
3. 楼上提到的,定义字符数组200是有200个元素,而访问的时候,下表是0~199。
代码如下,你看看:
#include
main()
{
int i = 0, j = 0;
char a[200] = {0};
printf("请输入一串字符串: ");
gets(a);
printf("\n");
printf("您输入的是:%s\n", a);
printf("\n");
while (a[j] != '\0')
{
if ((a[j] >= 'a' && a[j] <= 'z') || (a[j] >= 'A' && a[j] <= 'Z')) i++;
else if (a[j] >= '0'&&a[j]<='9') i++;
else if (a[j] == ' ') i++;
j++;
}
printf("您一共输入了%d个数\n", i);
}