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都会向后挪动一位。

 

posted @ 2018-11-09 10:18  9分钟带帽丶  阅读(5226)  评论(0编辑  收藏  举报