当前位置:首页 » 编程语言 » c语言结构体写入文件

c语言结构体写入文件

发布时间: 2023-01-16 06:32:07

c语言文件读写结构体里面的数据怎样存到磁盘文件上

1、首先打开VC++6.0。

❷ c语言怎么把结构体数组写入txt文件

fopen("student.txt","wb")
b就是二进制的意思。你用二进制形式将student.txt打开
而fwrite也是将内存中的数据不经转换直接写入文件,所以文件中保存的是二进制形式,当然看到乱码了。

你试试:
if((fp1=fopen("student.txt","w"))==NULL)
{printf("cannot open this file\n");
exit(0);
}
printf("No Name Eng point Math point Phy point\n");
for(i=0;i<N;i++)
{scanf("%s,%s,%d,%f,%d,%f,%d,%f",student[i].no,student[i].name,&student[i].eng,&student[i].point1,
&student[i].math,&student[i].point2,&student[i].phy,&student[i].point3);
student[i].ave=(student[i].eng+student[i].math+student[i].phy)/3.0;
fprintf(fp1,"%s,%s,%d,%f,%d,%f,%d,%f",student[i].no,student[i].name,student[i].eng,student[i].point1,
student[i].math,student[i].point2,student[i].phy,student[i].point3);
}

就是用fprintf函数写入文件,你试试看吧。

❸ c语言将结构体写入文件

谁说fwrite只能写入整形的
fwrite((void*)&variable, 1, sizeof(float), fp);
写结构体入文件时要格外注意对齐格式,最好可以单元素写,单元素读。整个结构体写入的话,如果读出程序对齐格式与写入程序不同,那读出来的数据一定是错的。

❹ C语言中可否将整个结构体写入文件,然后取出来也是按结构体输出

可以,写的时候用指针一次性写进去,但是如果文件中写如了多个结构体你可能读取的时候要区分一下否则一次全部读出来了,读出来的时候直接赋值就行。

❺ C语言结构体的文件写入问题

第一个问题:
void save(struct classdata *head)
函数的返回类型定义为void,建议修改为int或其他类型,总之应有返回值,因为函数的调用者是关心该函数的运行结果的。

第二个问题:
if((text=fopen(data,"wb+"))==NULL)
{printf("文件打开失败\n");
//通常这里需要返回,因为fopen操作已经失败了,后面的操作无法正确执行,应该向函数调用者返回一个错误值。不过你的这个函数声明为void类型,无法返回值,会影响到对程序的控制(因为函数的调用者不知道调用后函数的执行结果是正常结束的还是异常结束的)。
}

第三个问题:
while(head!=NULL)
{
if(fwrite(head,sizeof(struct classdata),1,text)!=1); //这一行最后的分号应删除
//这里;应该加一个左花括号
printf("数据写入失败\n");
// 这里应该加一个右花括号
head=head->transverse;
}
修改后
while(head!=NULL)
{
if(fwrite(head,sizeof(struct classdata),1,text)!=1)
{
printf("数据写入失败\n");
//注1:这里应返回一个错误值
}
head=head->transverse;
}

注1:这里有与问题二同样的情况,没有对可能出现的异常情况进行判断和处理,所以,即使发生异常,循环仍会继续进行直到最后一条记录(当fwrite出现一次异常,通常之后的操作也不会正常完成),如你的代码,就会反复输出"数据写入失败"字样。
对于你的应用程序来说,可能没有太多条记录(学生数再多也就是百或者千数量级的),所以表面上可能看不出来有什么影响。在实际的软件工程项目中,操作的如果是以百万或千万数量级的记录数(如数据库),效率上就会有很大的差别。建议养成良好的习惯,对可能出现的异常要进行判断和处理。
实际上,一个函数的代码中,真正完成函数功能的代码可能很少,但用于异常情况的判断和处理的代码可能会是实现函数功能代码的N多倍,这样才可以作出坚固、稳定的程序。

综上,个人给出建议的代码:
int save(struct classdata *head)
{
FILE *text;
char data[255]; //这里有改动,文件名字符串长度建议长一些
printf("请输入你要建立的文本名字:");
scanf("%s",data);
if((text=fopen(data,"wb+"))==NULL)
{
printf("文件打开失败\n");
return -1;
}
while(head!=NULL)
{
if(fwrite(head,sizeof(struct classdata),1,text)!=1)
{
printf("数据写入失败\n");
return -2;
}
head=head->transverse;
}
return 0;
}

❻ C语言怎么把结构体写入文件

一般有两种方法.

structA
{
inta;
floatf;
chars[10];
}m;

为例:

一种是写文本文件

以"w"打开

fprintf(fp,"%d%f%s
",m.a,m.f,m.s);

另一种是写二进制文件.

以"wb"打开

fwrite(&m,sizeof(m),1,fp);
热点内容
云服务器的ip固定的吗 发布:2025-07-15 19:26:12 浏览:934
怎么建立电脑配置文件 发布:2025-07-15 19:23:57 浏览:672
手机导航源码下载 发布:2025-07-15 19:18:29 浏览:499
什么是原生态安卓机 发布:2025-07-15 19:16:52 浏览:686
linux的安装目录在哪 发布:2025-07-15 19:10:04 浏览:724
2008编程入门经典 发布:2025-07-15 18:58:44 浏览:603
艾派密码是什么 发布:2025-07-15 18:47:40 浏览:588
密码锁如何在里面开门 发布:2025-07-15 18:35:00 浏览:521
额温算法 发布:2025-07-15 18:18:14 浏览:728
ie客户端事件脚本执行异常 发布:2025-07-15 18:10:13 浏览:26