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

 我来答
爱莉丶170
2015-06-09 · TA获得超过135个赞
知道答主
回答量:132
采纳率:100%
帮助的人:48.7万
展开全部

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\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;
}

编译运行后的结果如下:

   

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式