c语言怎么把一个结构体存入文件,在把文件读取怎

如题所述

C语言,要将结构体中的数据存到磁盘上需要使用与文件操作相关的库函数。
首先要使用文件打开函数fopen()。
fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。
其次,使用文件读写函数读取文件。
在C语言中提供了多种文件读写的函数:
·字符读写函数 :fgetc和fputc
·字符串读写函数:fgets和fputs
·数据块读写函数:freed和fwrite
·格式化读写函数:fscanf和fprinf
最后,在文件读取结束要使用文件关闭函数fclose()关闭文件。

下面使用格式化读写函数fscanf和fprintf实现对文件A.txt(各项信息以空格分割)的读取,并存入结构体数组a中,并将它的信息以新的格式(用制表符分割各项信息)写入B.txt,实现对A.txt的处理。

C语言源程序如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef struct student{
char name[32];
int no;
char sex[16];
float score;
} stu;

int main(int argc, char* argv[])
{
//打开文件
FILE * r=fopen("A.txt","r");
assert(r!=NULL);
FILE * w=fopen("B.txt","w");
assert(w!=NULL);

//读写文件
stu a[128];
int i=0;
while(fscanf(r,"%s%d%s%f",a[i].name,&a[i].no,a[i].sex,&a[i].score)!=EOF)
{
printf("%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到显示器屏幕
fprintf(w,"%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到文件B.txt
i++;
}

//关闭文件
fclose(r);
fclose(w);

system("pause");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-04-12
C语言,要将结构体中的数据存到磁盘上需要使用与文件操作相关的库函数。 首先要使用文件打开函数fopen()。 fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE本回答被网友采纳
相似回答