在线编译器 C

#include <stdio.h> int len(int c){ int sum=0; while(c!='\0'){ sum++; } return sum; } int main() { char n; int t=1; int i=0,a[200]; while(t!=0){ scanf("%c",&n); a[i]=n; i++; } for(int m=0;m<i;i++){ printf("%c",a[m]); } return 0; }
这段代码试图读取字符并存储到数组中,然后输出它们,但存在几个关键问题。

首先,`len` 函数中 `while(c!='\0')` 永远不会结束,因为 `c` 是一个整数参数,不是字符指针,且循环内没有改变 `c` 的值。其次,主循环 `while(t!=0)` 中 `t` 从未被修改,导致无限循环。另外,输出循环的 `for` 语句中 `i++` 写成了递增循环变量,但实际使用的是 `m`,导致索引错误。

- 检查 `len` 函数的参数类型和循环条件:`c` 是单个整数,不是字符串,无法用 `\0` 判断结束。思考如何正确计算字符串长度。
- 主循环缺少终止条件:`t` 始终为1,循环不会停止。考虑如何让用户输入结束信号(比如换行符或特定字符)来退出循环。