当前位置: 首页 > 知识库问答 >
问题:

c - 为什么文件里的数据读不出来?

祁承望
2024-02-03

问题是下面语句从文件中读取不了数据。

fscanf(fp,"%d%s%s%d%d%d%f%d",&cla[i].num,cla[i].name,cla[i].nature,&cla[i].toperiod,&cla[i].giperiod,&cla[i].experiod,&cla[i].credit,&cla[i].term);
void listcourse(){//要改     int i,n,count=0,j;    FILE *fp;    struct Course cla[100];    color(10);    if((fp=fopen("d:\\UserDate\\Cpp\\course.txt", "r"))==NULL)    {printf("无法打开此文件\n");exit(0);}    for(i=0;!(feof(fp));i++){                fscanf(fp,"%d%s%s%d%d%d%f%d",&cla[i].num,cla[i].name,cla[i].nature,&cla[i].toperiod,&cla[i].giperiod,&cla[i].experiod,&cla[i].credit,&cla[i].term);        count++;        printf("%d",count);        printf("lllll");//没有打印,文件数据读不出来     }    for(j=0;j<count;j++)    {        printf("课程编号:%07d 名称:%s 性质:%s 总学时:%d 授课学时:%d 实验或上机学时:%d 学分:%.2f 上课学期:%d\n",cla[j].num,cla[j].name,cla[j].nature,cla[j].toperiod,cla[j].giperiod,cla[j].experiod,cla[j].credit,cla[j].term);        if((j+1)%10==0)                    //判断输出是否达到10条记录        {            printf("每页显示10条课程记录,按回车键向后翻页......\n");            getchar();            system("cls");        }    }        fclose(fp);    color(10);    printf("请选择1.返回主界面2.退出\n");    scanf("%d",&n);    switch(n){    case 1:system("cls");welcome();break;    case 2:exit(0);break;}}

文件里的内容是
1 数据库 专业课 48 40 8 5.00 1
2 c语言 专业课 30 15 15 6.00 2
3 python 专业课 30 15 15 5.00 1
4 java 专业课 46 23 23 6.00 2
5 云计算 专业课 20 10 10 4.00 3
6 ps 选修课 10 5 5 1.00 1
7 数学 必修课 20 10 10 3.00 1
8 英语 必修课 20 10 10 3.00 2
9 电子 专业课 30 20 10 4.00 2
10 水彩画 选修课 10 5 5 2.00 3

结构体为

struct Course//课程{ int num;//课程编号  char name[50];//课程名称  char nature[50];//课程性质  int toperiod;//课程总学时  int giperiod;//课程授课学时  int experiod;//课程上机或实验学时  float credit;//课程学分  int term;//课程学期};

确定文件文件命名正确。
打印结果为image.png

共有1个答案

商嘉木
2024-02-03

根据代码,读文件是没有问题的,,,,估计你的路径、或文件不正确

 类似资料:
  • 问题内容: 编译Java文件时,它将生成一个.class文件。现在,此.class文件具有JVM解释的字节码。当我们在文本编辑器中打开.class文件时,它不是人类可读的。现在要查看字节码,可以使用像javap这样的反汇编程序。 我的问题是,为什么我们需要分解字节码才能查看字节码本身? 反汇编程序实际上是如何将.class文件转换为人类可读格式的? 问题答案: Java虚拟机模拟一台计算机。这就是

  • 我该怎么从netfilter勾出来的报文里读取数据? 我使用这个钩子函数,读取netfilter架构勾出来的网络报文对应的skbuff结构体的内容,并打印到日志中. 之后,我在本地的12345端口,使用两个终端的netcat指令进行通信,内容为ABCDE. 然后我截取到类似如此的内容. 差不多是这么个样子.如果它的网络报文中包含A,B这些英文字符,那为什么我使用printk打印不出来? 现在我发现

  • 这段代码导出sql数据到csv文件,数据是出来了,显示在网页上,不保存成csv文件,请教一下什么原因?

  • 问题内容: 我有一个2 GB的文件(),其中文件中的每一行都是一个单词,就像: 我需要编写一个程序来读取文件中的每个单词并打印单词计数。我使用Java和C 编写它,但结果令人惊讶:Java运行速度是C 的2.3倍。我的代码如下: C ++: 输出: Java: 输出: 在这种情况下,为什么Java比C 快?如何提高C 的性能? 问题答案: 您不是在比较同一件事。Java程序读取行,以换行符开头,而

  • file1.go里 room.go里 是可以的 但是main.go里 就保存后直接给我删除了 "./file1" 在vscode里 就保存后直接给我删除了 "./file1" 在vscode里 我想在main.go里可以访问 file1.go的全局变量

  • 问题内容: 我试图从产品的Facebook页面中提取一些数据并将其全部转储到文本文件中,但是我发现该文件不断用数据覆盖自身。我不确定这是一个分页问题还是必须制作多个文件。 这是我的代码: 知道为什么会这样吗? 问题答案: 这用于在文件模式下使用文件运算符覆盖可以使用append方法的内容 可以这样做 修改: 覆盖现有文件 即 File1.txt: 码: python运行后的File1.txt: 那