c - C - 十六进制值 0x00 未写入文件
问题描述
我正在编写一个程序,我想将一些十六进制地址写入文件。问题是当我hexdump -C temp
文件时,我只看到bc ab
并且由于\x00
某种我不明白的原因没有写入文件。也许他们被识别为EOF字符?非常感谢任何帮助。
File *file;
char *buffer, *ptr;
ptr = buffer;
*(ptr++) = '\xbc';
*(ptr++) = '\xab';
*(ptr++) = '\x00'; // problem
*(ptr++) = '\x00';
file = fopen("temp", "w");
if (file == NULL) {
fprintf(stderr, "Opening file failed.\n");
exit(1);
}
fprintf(file, "%s", buffer);
fclose(file);
解决方案
您试图用 fprintf 的 %s 写入空字符。空字符是字符串终止符。不会这样写的。使用 fwrite 或 fputc。
推荐阅读
- python - 暂停在opencv中显示一系列图像
- php - 抓取具有不同长度的动态字符串的子字符串,与特定变量和/或值 php 相关联
- css - GitHub Pages 和本地托管的 Jekyll 站点之间的差异
- .net - 我的 Azure 逻辑应用程序如何通过 AD 进行身份验证以调用我的 .Net 端点?
- magento - Magento 2:如何修改观察者预缓存的产品数据?
- amazon-web-services - 有什么方法可以清理 docker overlay2 文件夹并将其移动到 s3?
- azure - 如何知道 Azure Auto Resolve Intigration 运行时 IP 地址
- javascript - split(' ') 和 split ( /( )/ ) 的区别
- mongodb - 合并/组合来自不同字段的两个对象数组
- swift - 对 Swift Migrator Helper Functions 的看法?