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

#include <stdio.h> int main() { char n; int a[200]={0}; int i=0; while(i<200){ scanf("%c",&n); a[i]=n; i++; } for(int i=0;i<200;i++){ printf("%c",a[i]); } return 0; }
这段代码的功能是:从键盘读取200个字符,存入数组a中,然后再逐个打印出来。

代码存在一个逻辑问题:循环条件 `i<200` 会强制读取200个字符,但实际输入可能不足200个(比如用户只输入了几个字符就按回车)。此时程序会继续等待输入,直到读满200个字符才结束。

- 提示1:思考如何让程序在用户输入完内容后自动停止读取,而不是固定读取200个字符。可以检查读取到的字符是否为换行符 `'\n'`。
- 提示2:注意变量 `n` 的类型是 `char`,但 `scanf` 使用 `%c` 会读取包括空格和换行在内的所有字符,这可能导致数组存储了多余的换行符。考虑是否需要过滤这些字符。