fread和fwrite的使用
fread和fwrite一般用於二進制文件的輸入/輸出,要不然你打開fwrite寫入的文件就是亂碼。
1.fread和fwrite函數
數據塊I/O fread與fwrite
函數原型:
size_t fread(void *buffer, size_t size, size_t, count, FILE *pf)
size_t fwrite(void *buffer, size_t size, size_t count, FILE *pf)
功能:讀寫數據塊(將內存的內容直接寫入磁盤)
返回值:成功,返回讀/寫的個數,出錯或文件尾,返回0.
參數含義:
buffer 從pf中讀取到buffer/將buffer中的寫入到pf中去。
size 每個要讀/寫的數據塊的大小。
count 要讀/寫的數據塊的個數
fp 要讀/寫的文件指針
typedef unsigned size_t
2. 文本與二進制文件之間的區別是\n和\r之間的轉換。
3.例子
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include <stdlib.h> void main1() { int a[100]; printf("%p", a); for (int i = 0; i < 100;i++) { ; printf("\n%d", a[i] = i); } FILE *pf = fopen("C:\\1.bin", "r"); int num=fwrite(a, sizeof(int), 99, pf);//第一個內存首地址,第二個元素大小,第三個個數 printf("fwrite return =%d", num);//返回寫入成功的個數.失敗返回0 fclose(pf); system("pause"); } void write() { int a[100]; for (int i = 0; i < 100; i++) { printf("\n%d", a[i] = i); } FILE *pf = fopen("C:\\1.bin", "wb"); int num = fwrite(a, sizeof(int), 100, pf);//第一個內存首地址,第二個元素大小,第三個個數 printf("fwrite return =%d", num);//返回寫入成功的個數.失敗返回0 fclose(pf); } void read() { void *p = malloc(400); printf("%p\n", p); FILE *pf = fopen("C:\\1.bin", "rb"); int num= fread(p, 4, 100, pf);//第一個內存首地址,第二個元素大小,第三個個數 printf("fread return =%d", num);//返回讀取成功個數 fclose(pf); } void main() { read(); system("pause"); }
