Online Compiler C

#include <stdio.h> #include <string.h> int main() { char a[1000]; int count = 0; scanf("%[^\n]", a); for (int i = 0; a[i] != '.'; i++) { if (a[i] >= '0' && a[i] <= '9') { count++; } } printf("%d\n", count); return 0; }
这段代码的作用是:读取一行文本(直到遇到换行符),然后统计其中在第一个句点之前出现的数字字符('0'到'9')的个数,最后输出这个个数。

代码存在一个潜在问题:如果输入的字符串中根本没有句点,循环条件 `a[i] != '.'` 会导致循环一直访问数组越界,可能引发未定义行为。

- 考虑在循环条件中增加对字符串结束符 `'\0'` 的检查,确保不会超出字符串实际长度。
- 思考一下,如果输入中不包含句点,你希望程序如何处理?是统计整个字符串中的数字,还是其他行为?