- 前言
-
想尝试一下把字符串以二进制的方式写入文件,然后以二进制的方式读出来。但是写入helloworld,始终读出乱码。
-
更改char类型和string类型写入和读出,依然乱码。
- 尝试与比较
-
比较网页上各种读写代码,发现fopen中的文件名需要加.bin的后缀。我之前fopen没有指定文件后缀。尝试后确认,读出helloworld。之后我尝试一下别的后缀,如 .txt和.csr,都能正常以二进制方式读写。
-
我记录一下这个小问题,二进制写入文件,文件一定需要指定后缀。
- 代码
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream>
using namespace std;
int main()
{
FILE* writeFile = fopen("hello.csr", "wb");
// 读取一个整型变量
char str[] = "hello world";
fwrite(&str, sizeof(unsigned char), 12, writeFile);
fclose(writeFile);
FILE* readFile = fopen("hello.csr", "rb");
char ptr[12];
fread(&ptr, sizeof(unsigned char), 12,readFile);
printf("%s\n",ptr);
fclose(readFile);
return 0;
}