关于struct的读写

    技术2022-05-11  67

    运行环境:Red Hat Enterprise Linux  AS release 3AIX Version 5 操作系统上测试通过编译命令:cc -o read_file read_file.c执行命令:./read_file filename使用注意:fwrite出来的文件,需要同样的操作系统调用fread才能保证文件结构绝对一致源代码:#include <stdio.h>#include <string.h>

    typedef struct{    int   member1;    short int member2;    char  member3[10];    double member4;}  STRUCT1;

    int main(int argc, char *argv[]){    char filename[50];    FILE *fp = NULL;    STRUCT1 l_struct;

        if ( argc != 2 )    {        printf("Usage:read_file filename/n");        exit(0);    }        memset(&l_struct,' ',sizeof(STRUCT1));    sprintf(filename,"%s/file/%s",getenv("ENVDIR"),argv[1]); /*环境变量ENVDIR下file文件*/    printf("文件路径:%s/n",filename);    /***********************写文件到指定目录*************/    printf("开始写文件/n");    fp = fopen(filename, "w+");   /*打开文件,可写方式,+表示如果没有,则新建*/    if ( fp == NULL )    {        printf("写文件失败/n");        return -1;    }    l_struct.member1 = 100;    l_struct.member2 = 100;    memcpy(l_struct.member3,"测试文件",8);    l_struct.member4 = 50.22;

        fwrite(l_struct,1,sizeof(STRUCT1),fp);       /*把结构中的内容写入文件中*/    fclose(fp);    /********************写文件结束***********************/    /********************读文件到结构中********************/    fp = fopen(filename, "r");    /*打开文件,只读方式*/    if ( fp == NULL )    {        printf("读文件失败/n");        return -1;    }

        fwrite(l_struct,1,sizeof(STRUCT1),fp);       /*把结构中的内容写入文件中*/    fclose(fp);    /********************写文件结束***********************/    /********************读文件到结构中********************/    fp = fopen(filename, "r");    /*打开文件,只读方式*/    if ( fp == NULL )    {        printf("读文件失败/n");        return -1;    }

        fwrite(l_struct,1,sizeof(STRUCT1),fp);       /*把结构中的内容写入文件中*/    fclose(fp);    /********************写文件结束***********************/        /********************读文件到结构中********************/    fp = fopen(filename, "r");    /*打开文件,只读方式*/    if ( fp == NULL )    {        printf("读文件失败/n");        return -1;    }

        fread(&l_struct,1,sizeof(STRUCT1),fp);        /*从文件中读取出来并赋值给l_struct结构*/

        print_struct(l_struct);      /*调用函数显示l_struct里的member是否都正确*/

        fclose(fp);                  /*关闭文件*/    /*******************读文件结束***********************/    return 0;}

    int print_struct(STRUCT1 v_struct){    printf("int       member1 [%d]/n",v_struct.member1);    printf("short int member2 [%d]/n",v_struct.member2);    printf("char      member3 [%.10s]/n",v_struct.member3);    printf("double    member4 [%f]/n",v_struct.member4);    return 0;}


    最新回复(0)