输入字符串后冲洗标准输入,以随后输入下一个字符

时间:2018-12-27 19:23:17

标签: c scanf stdin flush

我想输入一个字符串,然后输入一个字符,以便在程序中进一步使用。但是,每当我尝试输入一个长度超过10个字符的字符串时,剩下的所有内容都会进入我的下一个输入请求。我尝试使用scanf(“%* c”),但无法刷新所有输入。

char tab[11];
char c;
printf("Give me a string: ");
scanf("%10[^\n]%*c", tab);
printf("%s\n", tab);
printf("Give ma a char: ");
scanf("%c", &c);

我应该如何正确处理此问题?

1 个答案:

答案 0 :(得分:1)

循环运行getchar,直到您读到换行符为止:

printf("Give me a string: ");
scanf("%10[^\n]", tab);

while (getchar() != '\n');

printf("%s\n", tab);
printf("Give me a char: ");
scanf("%c", &c);