目录
fwrite(以二进制形式写文件)
描述
C 库函数 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) 把 ptr 所指向的数组中的数据写入到给定流 stream 中。
声明
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
参数
- ptr -- 这是指向要被写入的元素数组的指针。
- size -- 这是要被写入的每个元素的大小,以字节为单位。
- nmemb -- 这是元素的个数,每个元素的大小为 size 字节。
- stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。
返回值
如果成功,该函数返回一个 size_t 对象,表示元素的总数,该对象是一个整型数据类型。如果该数字与 nmemb 参数不同,则会显示一个错误。
使用
struct S { int a; char b[50]; float c; }; int main() { struct S s = { 55,"changsan",1.85 }; FILE* pf = fopen("test.txt", "wb"); if (pf == NULL) { return 0; } fwrite(&s, sizeof(s), 1, pf); fclose(pf); pf = NULL; return 0; }
注释:把s里面的内容以二进制形式写到文件(pf)里面。
fread(以二进制形式写文件)
描述
C 库函数 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) 从给定流 stream 读取数据到 ptr 所指向的数组中。
声明
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
参数
- ptr -- 这是指向带有最小尺寸 size*nmemb 字节的内存块的指针。
- size -- 这是要读取的每个元素的大小,以字节为单位。
- nmemb -- 这是元素的个数,每个元素的大小为 size 字节。
- stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输入流。
返回值
成功读取的元素总数会以 size_t 对象返回,size_t 对象是一个整型数据类型。如果总数与 nmemb 参数不同,则可能发生了一个错误或者到达了文件末尾。
使用
struct S { int a; char b[50]; float c; }; int main() { struct S sum = { 0 }; FILE* pf = fopen("test.txt", "rb"); if (pf == NULL) { return 0; } fread(&sum, sizeof(sum), 1, pf); fclose(pf); pf = NULL; printf("%d %s %f", sum.a, sum.b, sum.c); return 0; }
注释:把文件(pf)里面的内容以二进制形式读到sum里面。