【发布时间】:2015-10-18 18:29:23
【问题描述】:
int main() {
char one[50]; char two[50];
while (scanf("%10s %10s",one,two) == 2){
printf("%s %s\n",one,two);
}
}
函数不会让我离开循环
Charanas-MacBook-Pro:Testing zone Charana$ ./a.out
first second
first second
one two
one two
one
two
one two
leave
知道如何解决这个问题,以便我可以在换行时留下scanf,或者在终端中只输入一个单词,而不是两个?
【问题讨论】:
-
scanf不知道换行符。它将继续扫描,直到找到两个单词,无论它们分布在多少行。如果您想要真正的基于行的输入,请使用fgets或getline等非标准模块来读取一行,然后扫描该行。 -
或使用文件结束符,如
Ctrl-Z(Windows 控制台)或Ctrl-D(Linux)。 -
@M Oehm
scanf()确实“知道”类似的中断 - ti 取决于说明符。如果有的话,scanf("%s...不会区分换行符和空格。同意最好使用``fgets()/getline()`。