C语言vs2019,txt文件的格式化读取问题

oid showlist() { //局部变量的初始化 char username[20] = { 0 }; char stunum[20] = { 0 }; int chinese = 0; int math = 0; int english = 0; //FILE型指针的初始化 FILE * fp = NULL; //打开文件 if ((fp = fopen("s1.txt", "r")) == NULL) { perror("(tip:文件打开失败!请联系管理员,电话:152346789。)"); exit(0); } printf_s("(tip:文件已经打开!)\n"); Sleep(1500); system("cls"); //打印表头 printf_s("-------------------------------------------------------------------\n"); printf_s("%-10s %-10s %-10s %-10s %-10s %-12s|\n", "姓名", "学号", "语文", "数学", "英语", "总分", "平均分"); printf_s("-------------------------------------------------------------------\n"); //向txt文件读取数据 while (fscanf_s(fp, "%s %s %d %d %d %d", &username, &stunum, &chinese, &math, &english) != EOF) { int sum = chinese + math + english; int avg = sum / 3; printf_s("%-10s %-10s %-10d %-10d %-10d %-10d %-10d %-12d|\n", username, stunum, chinese, math, english,sum,avg); } //打印表尾 printf_s("-------------------------------------------------------------------\n"); //暂停界面 system("pause"); //关闭文件 fclose(fp); } 运行后,s1. txt里的数据并没有读取出来(╥﹏╥)

修改如下,问题见注释,供参考:

//运行后,s1. txt里的数据并没有读取出来(╥﹏╥)

void oid_showlist()
 {
      //局部变量的初始化
    char username[20] = { 0 };
    char stunum[20] = { 0 };
    int  chinese = 0;
    int  math = 0;
    int  english = 0;
    //FILE型指针的初始化
    FILE * fp = NULL;
    //打开文件
    if ((fp = fopen("s1.txt", "r")) == NULL) {
         perror("(tip:文件打开失败!请联系管理员,电话:152346789。)");
         exit(0);
     }
     printf_s("(tip:文件已经打开!)\n");
     Sleep(1500);
     system("cls");
     //打印表头
     printf_s("-------------------------------------------------------------------\n");
     printf_s("%-10s %-10s %-10s %-10s %-10s %-10s %-12s|\n", "姓名", "学号", "语文", "数学", "英语", "总分", "平均分");
     //printf_s("%-10s %-10s %-10s %-10s %-10s %-12s|\n", "姓名", "学号", "语文", "数学", "英语", "总分", "平均分"); //错误
     printf_s("-------------------------------------------------------------------\n");
     //向txt文件读取数据
     while (fscanf_s(fp, "%s %s %d %d %d", username,20, stunum,20,&chinese,&math,&english)!= EOF){
           //(fscanf_s(fp, "%s %s %d %d %d %d", &username, &stunum,&chinese,&math,&english)!= EOF) //这句的格式是错的
            int sum = chinese + math + english;
            int avg = sum / 3;
            printf_s("%-10s %-10s %-10d %-10d %-10d %-10d %-12d|\n", username, stunum, chinese, math, english,sum,avg);
            //printf_s("%-10s %-10s %-10d %-10d %-10d %-10d %-10d %-12d|\n", username, stunum, chinese, math, english,sum,avg);//错误
     }
     //打印表尾
     printf_s("-------------------------------------------------------------------\n");
     //暂停界面
     system("pause");
     //关闭文件
     fclose(fp);
}

 

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^