为什么我用清空缓冲区后,运行时scanf()输入很多个回车键还是没反应?(我是学生,刚学C)

 1.用fflush()函数清空缓冲区

  1. #include<stdio.h>
    #include<stdlib.h>
    //文件合并器
    
    
    int main()
    {
        char file1[10000],file2[100000],file3[110000];
        //确定要参与合成的文件名
        printf("请输入想被加入的文件名:");
        scanf("%s",file1);
        fflush(stdin);
        printf("请输入想加入的文件名:");
        scanf("%s",file2);
        fflush(stdin);
        printf("请输入最后合成得到的文件名:");
        scanf("%s",file3);
        fflush(stdin);
        return 0;
    }

2.用while循环清空缓冲区

#include<stdio.h>
#include<stdlib.h>
//文件合并器


int main()
{
    char file1[10000],file2[100000],file3[110000],c;
    int i;
    //确定要参与合成的文件名
    printf("请输入想被加入的文件名:");
    scanf("%s",file1);
    while ( (c = getchar()) != '\n' && c != EOF ) ;   
    printf("%d\n", i);
    printf("请输入想加入的文件名:");
    scanf("%s",file2);
    while ( (c = getchar()) != '\n' && c != EOF ) ;    
    printf("%d\n", i);
    printf("请输入最后合成得到的文件名:");
    scanf("%s",file3);
    while ( (c = getchar()) != '\n' && c != EOF ) ;    
    printf("%d\n", i);
    return 0;
}

 

改这样,供参考:

#include<stdio.h>
#include<stdlib.h>
//文件合并器

int main()
{
    char file1[10000],file2[100000],file3[110000];
    //确定要参与合成的文件名
    printf("请输入想被加入的文件名:");
    fflush(stdout);rewind(stdin);
    scanf("%s",file1);
                                              //fflush(stdin);
    printf("请输入想加入的文件名:");
    fflush(stdout);rewind(stdin);
    scanf("%s",file2);
                                              //fflush(stdin);
    printf("请输入最后合成得到的文件名:");
    fflush(stdout);rewind(stdin);
    scanf("%s",file3);
                                              //fflush(stdin);
    return 0;
}

 

scanf("%s\n",file1);

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632