Онлайн компилятор C

#include <stdio.h> int digit_to_num(char c) { int sum = 0, digit; if (c >= '0' && c <= '9') { digit = c - '0'; sum = sum + digit; } return sum; } int main(void) { int c; while ((c = getchar()) != '.') { printf("%d", digit_to_num(c)); return 0; } }
这段代码试图将输入的每个数字字符转换为对应的整数值并输出,但存在逻辑错误。`digit_to_num` 函数虽然能正确转换单个数字字符,但主循环的设计有问题。

- 主循环中 `return 0;` 放在了循环体内部,导致程序在读取第一个字符后就立即结束,不会继续处理后续字符。
- `digit_to_num` 函数中的 `sum` 变量和累加逻辑是多余的,因为每次只处理一个字符,直接返回 `digit` 即可。