c语言文件读写的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言文件读写的问题相关的知识,希望对你有一定的参考价值。

为啥当我文件为空时,程序读取文件就出错啊,有记录就能正常读写。

给个文件读写的例子,你看看吧。
//读数  readFile.c
#include<stdio.h>
#include<stdlib.h>
#define N 20
struct stud
 
int num;
int sco1;
int sco2;
int sco3;
stu[N];
void main()
 
FILE *fp;
double ave;
int i=0,x;
if((fp=fopen("STUDENT.DAT","r"))==NULL)
 
printf("无法打开该文件!\\n");
exit(0); 

else 
printf("文件打开成功!\\n");

for(i=0;i<N;i++)
fread(&stu[i],sizeof(struct stud),1,fp);//stu改为&stu[i],因为地址始终没变,所以只有一条数据
i++;    

fclose(fp);
printf("请输入要查找的学生学号:\\n");
scanf("%d",&x);
for(i=0;i<N;i++)
 
if(x==stu[i].num) 
 
ave=(double)(stu[i].sco1+stu[i].sco2+stu[i].sco3)/3.0;
break;

else 
i++;

if(i==10||ave<0||ave>100)  
printf("查无该生成绩!\\n");
else 
printf("该生平均成绩为:%.2lf\\n",ave);

//存数  writeFile.c
#include<stdio.h>
#include<stdlib.h>
#define N 20
struct stud
 
int num;
int sco1;
int sco2;
int sco3;
stu[N];

void main()

FILE *fp;
int i,n;
float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0;
if((fp=fopen("STUDENT.DAT","wb"))==NULL)
 
printf("无法打开该文件!\\n");
exit(0);

else 
printf("文件打开成功!\\n");

printf("请输入要输入的学生数:\\n");
scanf("%d",&n);
for(i=0;i<n;i++)
 
printf("请输入学生学号,数学成绩,政治成绩和英语成绩:\\n");
scanf("%d%d%d%d/n",&stu[i].num,&stu[i].sco1,&stu[i].sco2,&stu[i].sco3);
sum1+=stu[i].sco1;
sum2+=stu[i].sco2;
sum3+=stu[i].sco3;
if(fwrite(&stu[i],sizeof(struct stud),1,fp)!=1)
printf("file write error\\n");

fclose(fp);
ave1=sum1/n;
ave2=sum2/n;
ave3=sum3/n;
printf("------------------------------------\\n");
printf("NUM   Math   Prolitics   English\\n");
for(i=0;i<n;i++)
 
printf("%d%7d%10d%14d\\n",stu[i].num,stu[i].sco1,stu[i].sco2,stu[i].sco3);

printf("------------------------------------\\n");
printf("对应三门成绩均分为:\\n");
printf(" %7.2f%10.2f%14.2f\\n",ave1,ave2,ave3);

参考技术A 贴出你的读写代码来看一下。
最大的可能不是在读取时出错,而是你读出来后放到了一个字符串数组中,但在想要使用这个字符串数组时出错。
检查你的字符串数组,没有内容时数组是否指向了NULL追问

参考技术B 记住 回车在文本里读出来是 "\r\n" 两个字符,要排除他们。 len=strlen(min); 去掉 ,后一句改为 if(min=='\r' || min=='\n') countinue;
打字不易,如满意,望采纳。

C语言文件的顺序读写

以上是关于c语言文件读写的问题的主要内容,如果未能解决你的问题,请参考以下文章

linux系统下,文件存储与数据读写问题(C语言)。

如何用C语言读写文件

用C语言实现文件读写操作

QT读写文件的问题

C语言 文件的读写

有没有C语言的对xml文件读写操作的API