【发布时间】:2014-04-09 05:01:46
【问题描述】:
在浪费了太多时间搜索为什么我的程序在使用 scanf() 后没有执行 gets() 之后,我找到了一个解决方案,即在 scanf() 之后使用 fflush(stdin) 来启用 gets() 获取字符串.
问题在于 fflush(stdin) 没有按照预期执行:程序继续跳过gets(),我无法在控制台中写入任何要读取的短语。
我的代码是下一个:
#include <string.h>
#include <stdio.h>
int main(){
char nombre[10];
char mensaje[80];
printf("Type your name:\n");
scanf("%s", nombre);
fflush(stdin);
printf("Now, type a message:\n");
gets(mensaje);
printf("3/%s:%s",nombre,mensaje);
return 0;
}
【问题讨论】:
-
请阅读:stackoverflow.com/questions/2979209/using-fflushstdin(不过与您的问题无关)。
-
把最后一个
printf改成printf("3/%s:%s\n",nombre,mensaje); -
Michael 它运行不佳,因为当程序到达该行时,必须写入消息 (mensaje),而我无法编写任何内容,因为 gets() 一直在跳过
-
不要
fflush(stdin)。