C语言文件写入时报错,不知道问题出在哪了!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言文件写入时报错,不知道问题出在哪了!相关的知识,希望对你有一定的参考价值。

代码如下:
#include<stdio.h>
#include<stdlib.h>
#define SIZE 10
struct student_type

char name[10];
int num;
int age;
char sex;
stu[SIZE];
void the_save()

FILE *fp;
int i;
if((fp=fopen("stud_dat","wb"))==NULL)

printf("cannot open file\n");
return;

for(i=0;i<SIZE;i++)

if(fwrite(&stu[i],sizeof(struct student_type),1,fp)!=1);
printf("file write error\n");

fclose(fp);

void main()

int i;
char ch;
FILE *fp;
for(i=0;i<SIZE;i++)

scanf("%s%d%d%c",stu[i].name,&stu[i].num,&stu[i].age,&stu[i].sex);

the_save();
if((fp=fopen("stud_dat","rb"))==NULL)

printf("cannot open file\n");
exit(0);

for(i=0;i<SIZE;i+=2)

fseek(fp,i*sizeof(struct student_type),0);
fread(&stu[i],sizeof(struct student_type),1,fp);
printf("%s %d %d %c\n",stu[i].name,stu[i].num,stu[i].age,stu[i].sex);

fclose(fp);
system("pause");

在调用the_save()函数时总是输出"file write error\n",问题应该出在输入sex时文件没能保存他的值,但是我觉得代码没问题阿,找了好久都没找到!求大神解答!

文件写入出错一般由以下三种原因:1、文件不存在;2、文件被某程序占用;3、文件在之前被打开后没有关闭 参考技术A 这个if后面你加了分号,所以那个printf语句无论如何都是会执行的。
去掉后面的分号就可以了。
if(fwrite(&stu[i],sizeof(struct student_type),1,fp)!=1);
printf("file write error\n");追问

采纳的答案重新写了一遍代码,所以把采纳他了!不过还是谢谢你哈!

追答

ok

参考技术B if(fwrite(&stu[i],sizeof(struct student_type),1,fp)!=1); 换成 if(fwrite(&stu[i],sizeof(stu),1,fp)!=1);试试 参考技术C

本回答被提问者采纳

Excel 两个日期之间间隔的工作日数,非头尾,大家帮我看看我这样做,结果不对呀?问题出在哪了?不甚感激!

=NETWORKDAYS(A3,D3)-AND(WEEKDAY(A3)<>1,7) 参考技术A =DAYS360(C4,C4)
用这个函数追问

不是呀,我是要工作日

以上是关于C语言文件写入时报错,不知道问题出在哪了!的主要内容,如果未能解决你的问题,请参考以下文章

解决linux写入ntfs盘时报错:只读文件系统

初学Python,debug时报错,不知道原因在哪

C语言写入文件,文件操作

pandas读取csv文件时报错:ParserError: Error tokenizing data. C error

C#读取Excle文件时报错,怎么处理?

51单片机,keil 软件 C语言问题(我错在哪了)