c代码写数据到二进制的bin文件中
需要将数据写入到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都会向后挪动一位。