【发布时间】:2016-11-09 02:30:24
【问题描述】:
我意识到这个问题已经被问了很多次,并且我已经搜索了(大多数)文章,但我似乎无法用二进制文件编写文件。我可以打开文件并以人类可读的格式写入,但我想要的是写入文件的非人类可读数据(如十六进制)。我知道 Linux 上的“xxd”命令,但我想知道如何使用 C 来模仿它。我到目前为止的相关代码如下(打开文件,然后写入文件:
extern FILE* file;
static char file_buffer[16384];
file = fopen("audit_log", "wb");
if ( !file )
{
printf("failed to open file");
exit(1);
}
if ( !fwrite( &file_buffer, 1, sizeof(file_buffer), file ) )
printf("fwrite failed\n");
fclose(file)
我已经完成了我的研究和测试,并使用“b”参数为 fopen() 使用了所有不同类型的模式,并与 fwrite() 配对,但是这些方法都没有帮助我将二进制文件写入C. 我错过了一些微不足道的事情吗?我似乎无法弄清楚为什么我不能用二进制编写一个简单的文件。谢谢!
【问题讨论】:
-
fclose(file);,然后是fwrite,现在已经失效的FILE* file不是一个好计划。发布显示您的问题的最少、真实和完整代码。如果您的问题中的代码无法剪切/粘贴到文本文件、编译、链接和运行以重现您的症状,那么这还不够。 -
...
loop()是做什么的? -
“编写二进制文件”是什么意思?就 C 而言,这只是意味着“不要添加任何额外的行终止字符”,我怀疑您希望数据以某种方式进行转换。听起来您实际上想要文件的十六进制转储
-
基本上你总是在 unix 中编写二进制文件。其他一些环境基于 MS-DOS 传统换行符是两个字符这一事实来区分文本文件和二进制文件,并且玩游戏以将换行符变为回车符+换行符.. Linux 不是其中之一跨度>
-
if (!fwrite(...))不是对fwrite()故障的完整检测。
标签: c linux file binary writing