【问题标题】:Flushing stdin after inputing a string, to subsequently input next char输入字符串后刷新标准输入,随后输入下一个字符
【发布时间】:2018-12-27 19:23:16
【问题描述】:

我想输入一个字符串,然后是一个 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);

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

【问题讨论】:

    标签: c scanf stdin flush


    【解决方案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);
    

    【讨论】:

    • 哦,是的,如果我输入一些东西,我总是以'\n'结尾,这解决了我的问题。谢谢!
    • 不使用getchar()可以实现吗?
    • @RPAnimation getchar 是执行此操作的首选方式。
    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    相关资源
    最近更新 更多