
起航为您分享以下优质知识
在C语言中,将文本文件原样保存为二进制文件可以通过以下步骤实现:
使用`fread`函数按二进制方式读取源文件内容。
使用`fwrite`函数将读取的数据原样写入目标文件。
使用`fclose`函数关闭文件。
以下是一个完整的示例代码,展示了如何将文本文件原样保存为二进制文件:
```c
include
int main() {
FILE *sourceFile, *binaryFile;
char buffer;
size_t bytesRead;
// 以二进制模式打开源文件和目标文件
sourceFile = fopen("source.txt", "rb");
binaryFile = fopen("binary_file.bin", "wb");
// 检查文件是否成功打开
if (sourceFile == NULL || binaryFile == NULL) {
perror("文件打开失败");
return 1;
}
// 读取源文件内容并写入目标文件
while ((bytesRead = fread(buffer, 1, sizeof(buffer), sourceFile)) >
0) {
if (fwrite(buffer, 1, bytesRead, binaryFile) != bytesRead) {
perror("文件写入失败");
fclose(sourceFile);
fclose(binaryFile);
return 1;
}
}
// 检查读取是否结束(EOF)
if (ferror(sourceFile)) {
perror("文件读取失败");
fclose(sourceFile);
fclose(binaryFile);
return 1;
}
// 关闭文件
fclose(sourceFile);
fclose(binaryFile);
printf("文件转换成功!n");
return 0;
}
```
代码说明:
文件打开
- `sourceFile = fopen("source.txt", "rb");` 以二进制读取模式打开源文件。
- `binaryFile = fopen("binary_file.bin", "wb");` 以二进制写入模式打开目标文件。
- 使用`fread`函数按二进制方式读取源文件内容到缓冲区`buffer`中。
- 使用`fwrite`函数将缓冲区内容原样写入目标文件。
- 检查文件是否成功打开,以及读写操作是否成功。
- 使用`ferror`函数检测读取错误。
- 使用`fclose`函数关闭源文件和目标文件。
注意事项:
该方法会保留源文件的所有二进制数据,包括空格、换行符等特殊字符。
如果源文件较大,建议使用动态内存分配(如`malloc`)来处理大文件,避免栈溢出。
通过这种方式,文本文件的内容会被原样转换为二进制文件,且不会改变其格式或内容。