Online Compiler C

#include <stdio.h> int is_digit(char c){ if(c>='0'&&c<='9'){ return 1; }else return 0; } int main(void) { int c; int count = 0; while ((c = getchar()) != EOF && c != '.') { if (is_digit((char)c)) { ++count; } } printf("%d", count); return 0; }
这段代码的功能是:从标准输入读取字符,直到遇到文件结束符(EOF)或句点(.)为止,统计其中数字字符('0'到'9')的个数,并输出这个计数。

代码整体逻辑正确,但有一个潜在问题需要注意:

- 函数 `is_digit` 的参数类型是 `char`,但 `getchar()` 返回的是 `int` 类型,并且可能返回 `EOF`(通常是 -1)。当 `c` 等于 `EOF` 时,将其强制转换为 `char` 会丢失信息,可能导致判断错误。建议在调用 `is_digit` 之前先检查 `c` 是否等于 `EOF`,或者调整函数参数类型。