需要將數據寫入到bin文件中,打開該文件是一堆亂碼,增加數據的保密性
例如:要寫入的數據為一個字符串,加上若干個int型整數
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; int main(int argc, char* argv[]) { char names[100] = "KobeBryant"; int iValue[14] = { 84, 15, 157, 103, 112, 48, 142, 52, 128, 64, 108, 76, 136, 80 }; /* 新建一個bin文件 */ FILE *fw = fopen("1.bin", "wb"); if (fw == NULL) return 0; /* 寫入imgname,並加上一個空格 */ for (int i = 0; i < strlen(names); i++) fwrite(names + i, sizeof(char), 1, fw); char space = 32; fwrite(&space, sizeof(char), 1, fw); /* 將數值寫入到bin文件中 */ int length = sizeof(iValue) / sizeof(int); for (int i = 0; i < length; i++) { fwrite(iValue+i, sizeof(int), 1, fw); } fclose(fw); return 1; }
寫入的結果:
讀入bin文件的代碼:
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; int main(int argc, char *argv[]) { /* 創建文件指針,以只讀+二進制的方式打開文件 */ FILE *fr = fopen("1.bin", "rb"); /* 判斷打開文件是否成功 */ if (fr == NULL) { printf("Message : %s\n", strerror(errno)); return -1; } /* 輸出img的圖片名稱,加上一個換行符 */ char c_name; int rc = -1; rc = fread(&c_name, 1, sizeof(char), fr); while (c_name!=32) { cout << c_name; rc = fread(&c_name, 1, sizeof(char), fr); } printf("%c", 10); /* 讀入每個int型數據后,並輸出 */ int data = -1; int n = 0; rc = fread(&data, sizeof(int), 1, fr); while (rc) { n += rc; printf("%-5d", data); rc = fread(&data, sizeof(int), 1, fr); } /* 關閉文件 */ fclose(fr); system("pause"); return 0; }
讀該bin文件的結果:

rc = fread(&c_name, 1, sizeof(char), fr)函數,每次讀入一個字符,返回值為讀入成功的字符個數,讀入成功,rc=1,讀入失敗,rc=-1;
直到讀入空格時,字符串的讀入停止。
每次讀入一個字符時,文件指針fr都會向后挪動一位。