www.3112.net > C语言怎么把一个结构体存入文件,在把文件读取怎

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

C语言,要将结构体中的数据存到磁盘上需要使用与文件操作相关的库函数.首先要使用文件打开函数fopen().fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被

fwrite(&cus[i],sizeof(struct client),1,fp);这一句的作用: 将数组cus的第i+1个结构体写入文件.因为他传入的是指针&cus[i],即第i+1个元素的首位地址,而且写入的长度是该结构体类型的size. 如果你想要把整个结构体数组都写入文件,则应该为: fwrite(cus,sizeof(cus),1,fp); 或者 fwrite(&cus[0],sizeof(cus),1,fp); 对于像结构体和数组这样的串行数据,在内存中是连续存储的.所以我们在处理的时候,经常只需要确认它的首地址和长度就OK了.对这一点应用熟练了,你会充分感受到指针带来的便捷,在很多问题上也就如鱼得水…… 仅供参考!

1.如果你知道存入文件的第一个结构是什么类型的,此种就非常方便了,自己根据 从文件读出的第一个结构里面的下个结构指针 来读文件中下个结构.2.如果你不知道存入文件的第一个结构式啥类型,但又想分三个结构来存取,那你只能在每个结构里面加上一个变量来区分是什么结构,这样在读文件之前先读出这个变量,根据其值来判断结构类型

#include <stdio.h>#include<stdlib.h>#include <malloc.h>#define MAX 100 //初始分配量100#define MORE 10 //增量分配10typedef struct student{ int *num; char *name; int *goals;}table;void main(){ int i,n=0; int flg; FILE *fp; fp = fopen("table.txt","

最好用2进制方法打开文件,用fwrite 写文件.读时也用用2进制方法打开文件,用fread读.这样,写的时候按整个结构写,读也按整个结构读,字符串有空白也没关系.FILE *fp; fp=fopen("my.dat","wb"); fwrite(&stu,sizeof(stu),1,fp); // 写1个

用函数 fwrite就行,不过记得打开文件的时候用 “wb”或者“rb+”

C语言中对结构体数据格式文件进行读取时,必须以二进制格式打开文件,然后按结构体类型变量内存块方式进行数据读取,相关读数据命令为fread().函数说明: #include <stdio.h> size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream

#include //结构体,其中包含各种数据类型struct myStruct{ int Num; float Data; char Name[100]; double Len; char Ch; bool IsRight;};void main(void){ //定义一个结构体的数组: struct myStruct myDatas[10]; int i = 0; FILE *pWF = NULL;//写文件用的

结构体存储到磁盘文件,一般有两种方法,各有优劣,需要依照实际需求来选择.假定结构体格式为struct test{ int a; float b;};1 以二进制方式存储.直接以二进制方式存储,参考代码如下:#include <stdio.h>int main(){ struct test v = {1, 2.3}; FILE *

1. 用字符读出,判断是否为',',是的话就转化为结构体中的一个变量值,再读取判断,直到都读出来.2. 写入文件的时候每个数据的字节数都是定好的,直接读取一行,然后用memcpy(char* des,char* str,int n)读取,memcpy(des,str+n,m);从第n个字节读m个字节.两种都可以,第二种读字符串的时候有点问题,需要再做处理,因为写入文件时字符串是靠后写的,如%10s,你写入abc,存入文件的是“ abc”,而我们需要的是"abc",前面多了空格,所以你要处理下,要不然比较时字符串是不等的.

网站地图

All rights reserved Powered by www.3112.net

copyright ©right 2010-2021。
www.3112.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com