#include <stdio.h>
int main()
{
char a[80];
int i = 0, count = 0, j = 0;
printf("请输入一个字符串:");
for (j = 0; j < 80; j++)
{
scanf("%c", &a[j]);
if (a[j] == '\n')
break;
}
//a[j] = '\0';
//printf("%s", a);
for(i = 0; a[i] != '\0'; i++)
{
if(a[i]>='0'&&a[i]<='9')
count++;
}
printf("数字字符总个数为%d", count);
return 0;
}
数组a里并没有“\0”,照理说最后一for循环应该是死循环啊,为什么最后一个printf可以输出正确的结果……求大神解答,感谢
字符串最后一位系统自动补'\0',这就是为啥字符串长度会比数组大小少一(sizeof()和strlen())
'\0’是字符终止符,保存到数组的字符串末尾会默认有一个'\0'