【发布时间】:2012-01-24 23:36:00
【问题描述】:
我试图让用户在控制台中输入一段文本,我的程序只有在连续两次按下 enter 后才会从 stdin 读取该文本块,或者换一种说法,当按下 enter 时已经是空行。但是,我想继续从标准输入读取,所以基本上只有在已经空行上输入时才从标准输入读取。然后刷新并重新启动。
用户输入示例:
Hello(\n)
World(\n)
(\n)
(Read Now)
我找不到能够指定此行为的输入函数。
另外,我尝试了一些使用单字符检索功能的方法,但我无法让它正常工作。
有人知道优雅地做到这一点的方法吗?
答案已实现:
char word[100];
int i = 0;
while ((word[i++] = getchar())!='\n' || (word[i++]=getchar())!='\n');
printf("%s",word);
显然在使用这个之前需要处理缓冲区溢出。只是一个例子。
【问题讨论】:
-
逐行读取并在读取空行时设置标志。
-
“刷新并重新启动”是什么意思?你指定的程序的语义真的很差。