我想读取输入的所有文本,直到输入换行符。
这是我的代码。
int i=0; char ch[MAX]; printf("Enter the textn"); while(true) { scanf("%c",&ch[i]); if(ch[i]=='n') break; i++; }
但是当我尝试执行它时只读一个单词。
我也试过scanf("%s",ch);
但结果是一样的。
在依赖ch[i]
获得有效值之前,你没有检查scanf()
成功,这不是一个好主意。
只需使用fgets()
一次读取整行。
将评论转移到答案。
你的代码会起作用。 您发布的代码扫描所有内容,直到找到换行符( n
)。 但正如Jonathan Leffler评论的那样,你绝不会NUL终止你的字符串。 要做到这一点,只需使用
ch[i]=' ';
循环之后。 此外,用户可以输入比MAX-1
更多的字符(最后一个用于