首页 > 电脑

格式化读取文件,然后写入结构体(可是我的好像有点问题)

更新时间2019-02-06 23:07:26

#include<stdio.h>

int main()

struct man{ char name[20]; 

             int phone;

             float scores;    };

FILE *fp;int i=0;char ch[200];

if((fp=fopen("contants.txt","r"))==NULL)

printf("open failure");

else while(fgets(ch,200,fp)!=NULL)

i++;

struct man a[i];int j;

while((fscanf(fp,"%s%d%f",a[j].name,&a[j].phone,&a[j].scores))!=EOF)

j++;

for(j=0;j<i;j++)

printf("%s %d %f ",a[j].name,a[j].phone,a[j].scores);

}

 

contants.txt

张三 3144124  32.143

李四 21414141 424.312

王麻子 2343523523  3141.124141


因为结构体它里面有多种数据, 所以如果一个一个保存肯定是麻烦的. 所以, 如果保存的文件不是给用户看的, 而是只为程序所用, 那么直接用二进制方式打开文件, 然后用fwrite把结构的二进制数据写入内存

# include <stdio.h> struct dat{    int i;char ch;double d;}; int main(){    FILE *p = fopen("data.txt", "w");    if (!p)        return 0;    fwrite(&p, sizeof(p), 1, p);    fclose(p);}


c语言实现。把结构体写入文件,然后再读取出来并显示;

/* structinfile .c

*  Auther: tweety

*  date: 2009-12-04 

*/

#include <stdio.h>

typedef struct Filenode

{

     int isempty;

     char * data;

}filenode;

int node_init(filenode *node)

{

     node->isempty=1;

     node->data = "FOOLisENOUGH!";

     return 0;

}

int node_write_infile(filenode * node)

{

     //把结构体写入文件

     FILE *fp=fopen("file.txt","w");

     if(fwrite(node,sizeof(Filenode),1,fp))

    {

    fclose(fp);

    return 1;

    }

     else return 0;

}

int node_read_outfile(filenode *node)

{

    //读取结构体

     FILE *fp =fopen("file.txt","r");

     if(fread(node,sizeof(Filenode),1,fp))

    {

    fclose(fp);

    return 1;

     }

    else return 0;

}

int main()

{

     filenode *innode = malloc(sizeof(filenode));

     filenode *outnode =malloc(sizeof(filenode));

     node_init(innode);

     if(node_write_infile(innode)) printf("file write OK ");

     if(node_read_outfile(outnode))

     {

         printf("%d ",outnode->isempty);

         printf("%s ",outnode->data);

     }

     system("pause");

     return 0;

}


上一篇:关于显卡,内存条适配问题

下一篇:电脑配置问题