输入字符串后刷新标准输入,随后输入下一个字符

Flushing stdin after inputing a string, to subsequently input next char

我想输入一个字符串,随后是一个字符,以便在我的程序中进一步使用,但是每当我尝试输入一个超过 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);

我该如何正确处理这个问题?

运行 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);