问题描述
使用scanf读入一整行时,由于遇到\n停止,于是标准输入流里还有一个\n
而scanf是从第一个非空白符(空格、换行、tab)开始读取的,未读取成功返回0
由于标准输入流里的\n一直存在,因此scanf一直返回0,一直无法正常读取
例子:
#include<stdio.h>
int main(){
char buf[100];
while(1){
scanf("%[^\n]",buf);
printf("%s",buf);
}
return 0;
}
假如输入1,那么接下来将会无限循环输出1.(因为接下来每次scanf都未成功读取)
解决方法:
在后面加上getchar,“吸收掉换行符”
scanf("%[^\n]",buf)
getchar();