c结构化读写文件流

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ming2453755227/article/details/102746976

一 结构化内存,写入文件流
方法:

#include <stdio.h>
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

代码:

#include <stdio.h>
#include <string.h>
#define set_s(x,y) {strcpy(s[x].name, y); s[x].size = strlen(y);}
#define nmemb 3

struct test{
        char name[20];
        int size;
}s[nmemb];

int main(){
        FILE * fp;
        set_s(0, "LInux!");
        set_s(1, "FreeBSD!");
        set_s(2, "Windows2000");
        fp = fopen("test.txt", "w");
        fwrite(s, sizeof(struct test), nmemb, fp);
        fclose(fp);
        return 0;
}

输出:
[root@localhost test]# vi test.txt
在这里插入图片描述

二 从文件读取,结构化内存
方法:

#include <stdio.h>
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

代码:

#include <stdio.h>

struct test{
        char name[20];
        int size;
};

int main(){
        test arr[3] = {0};
        FILE * fp = fopen("test.txt", "r+");
        fread(arr, sizeof(struct test), 3, fp);

        for(int i = 0;i< 3;i++){
                printf("arr[%d]:name=%s, size=%d\n", i, arr[i].name, arr[i].size);
        }

        fclose(fp);
        return 0;
}

输出:

[root@localhost test]# g++ -o read read.cpp 
[root@localhost test]# ./read 
arr[0]:name=LInux!, size=6
arr[1]:name=FreeBSD!, size=8
arr[2]:name=Windows2000, size=11
[root@localhost test]# 

猜你喜欢

转载自blog.csdn.net/ming2453755227/article/details/102746976