我错误地使用 fflush(stdin) 来刷新 stdin 流的剩余部分:
printf("Gimme number");
scanf("%d",&number);
fflush(stdin);
printf("Gimme string");
gets(string);
当然,我已经包含了头文件和其他文件。我知道 fflush 用于标准输出而不是标准输入,但我非常需要一个替代方案以便在 scanf 之后使用 gets。我在这里搜索旧帖子,但只看到有关 scanf("%c\n",c); 的建议。 .当我执行 scanf("%d\n",x); 时,这会使程序崩溃。有什么想法吗?
最佳答案
一种可能性是使用 scanf
留下的换行符,方法是使用类似 getchar()
的方法:
printf("Gimme number");
scanf("%d",&number);
getchar();
printf("Gimme string");
gets(string);
另一种可能性是只使用 scanf:
printf("Gimme number");
scanf("%d",&number);
printf("Gimme string");
scanf(" %99s", string);
在将 99
替换为字符串缓冲区长度的地方,请注意 %
之前的空格,以确保它忽略空格(或制表符或换行符) ) 留在 stdin
上。
关于c - 冲洗替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14224295/