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语言源程序如下所示:
#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%d%s%g
",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到显示器屏幕
fprintf(w,"%s%d%s%g
",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到文件B.txt
i++;
}
//关闭文件
fclose(r);
fclose(w);
system("pause");
return 0;
}
编译运行后的结果如下:
C语言文件读写结构体里面的数据怎样存到磁盘文件上
1、首先打开VC++6.0。2、选择文件,新建。3、选择C++ source file 新建一个空白文档。4、首先声明头文件,#include<stdio.h>。5、主函数,定义变量main( ){ FILE *fp; int i; 需要一个结构体,struct rec{ \/*定义结构体类型*\/ char id[10];。6、主要代码if( (fp=fopen("d:\\\\in...
C语言文件读写结构体里面的数据怎样存到磁盘文件上
·字符读写函数 :fgetc和fputc ·字符串读写函数:fgets和fputs ·数据块读写函数:freed和fwrite ·格式化读写函数:fscanf和fprinf 最后,在文件读取结束要使用文件关闭函数fclose()关闭文件。下面使用格式化读写函数fscanf和fprintf实现对文件A.txt(各项信息以空格分割)的读取,并存入结构体数组a中,...
C语言中,将多个结构体数据写到一个文件中,应该如何读取?
C语言把一个结构体数组写入文件分三步:1、以二进制写方式(wb)打开文件2、调用写入函数fwrite()将结构体数据写入文件3、关闭文件指针相应的,读文件也要与之匹配:1、以二进制读方式(rb)打开文件2、调用读文件函数fread()读取文件中的数据到结构体变量3、关闭文件指针参考代码如下:include<stdio.h>s...
C语言中可否将整个结构体写入文件,然后取出来也是按结构体输出
在实际应用中,若需要将整个结构体写入文件,可以先使用fwrite()函数将结构体数据写入文件,然后再使用fread()函数从文件中读取结构体数据。总之,在C语言中处理结构体数据时,采用二进制文件模式可以避免文本模式带来的兼容性问题,并确保数据的正确读写。正确使用fread()和fwrite()函数,将有助于实现高效...
c语言中怎样读取未知结构体存入的信息
用强制转换类型的方法读取,例如:若该结构体存放的地址为a;由于不知道具体占了多少字节,我们就读自己需要的字节吧,例如读100个字节出来:unsigned char buf[100],i,*p;p=(unsigned char *)a;for(i=0;i<100;i++)buf[i]=p[i];这样100个字节就都复制到buf里了 ...
c语言怎么用文件保存和读取 结构体数组\/
fwrite( (char*)tw , sizeof(struct test), 3 , fp ); \/\/将数组写入文件 fclose(fp);\/\/以上完成写操作 fp=fopen("struct.dat" , "rb" );if ( fp == NULL )return -1 ;fread( (char*)tr , sizeof(struct test), 3 , fp ); \/\/从文件中读三个结构体的数据,也可以一个一个...
怎样将内存中的结构体数组写入和读取文本文件
1、以二进制写方式(wb)打开文件 2、调用写入函数fwrite()将结构体数据写入文件 3、关闭文件指针 相应的,读文件也要与之匹配:1、以二进制读方式(rb)打开文件 2、调用读文件函数fread()读取文件中的数据到结构体变量 3、关闭文件指针 参考代码如下:include<stdio.h> struct stu { char name[30]...
C++如何读入一个文件中的结构体数组数据?
1 如果文件中存储的方式为二进制形式数据:需要使用fread(C语言风格)或ifsteam的read成员函数(C++风格。)从文件中读取结构体数据到对应的结构体指针上。如 struct test { int a;};struct test t;fread(&t, 1,sizeof(t), fp);或 file.read(&t, sizeof(t));2 如果文件中,是以文本方式...
怎么把结构体里的内容写入文本文档中
打开文件写的属性是"wb+"或"wb";读取时属性是"rb";写整个记录(假设struct MMM comm[1024];): fwrite(comm[m],1,sizeof(struct MMM),fp);读整个记录: fread(comm[m],1,sizeof(struct MMM),fp);这样就可以不用一个一个数据单独处理了一次可读写整个结构的数据。
C语言读取文本文档里的数据,循环存到结构体里。怎么判断读完了,跳出循 ...
include<stdio.h>int main(){ int a1[50]; \/\/定义数组,大小50,结构体形式你自己定义就行 FILE*fp; int k=0; int iif((fp=fopen("test.txt","r"))==NULL) \/\/打开文件,文件名你自己改 { printf("cant find the file!"); return -1; } while(!f...