版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
一 结构化内存,写入文件流
方法:
#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]#