我有这个奇怪的问题:
我写了16个字符到一个二进制文件然后我写了3个整数但是当我用一些二进制文件查看器打开我的文件时,我看到一个额外的字节被添加(等于0x0D).
这是我的代码:
for(i = 0; i < 16; i++)
{
if(i < strlen(inputStr))
{
myCharBuf[0] = inputStr[i];
}
else
{
myCharBuf[0] = 0;
}
fwrite(myCharBuf, sizeof(char), 1, myFile);
}
myIntBuf[0] = inputNumber1;
fwrite(myIntBuf, sizeof(int), 1 ,myFile);
myIntBuf[0] = inputNumber2;
fwrite(myIntBuf, sizeof(int), 1 ,myFile);
myIntBuf[0] = inputNumber3;
fwrite(myIntBuf, sizeof(int), 1 ,myFile);
Run Code Online (Sandbox Code Playgroud)
我得到以下字节值:
61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0D 0 00 00 00 00 00 00 00 08 00 00 00
当我期待:
61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0A 00 00 00 05 00 00 00 08 00 00 00
有谁知道为什么会发生这种情况?
Jef*_*ter 17
0A是换行符,0D是回车符.这些通常与文本模式相关联.
你是否以二进制模式打开文件?(例如fopen("foo.txt", "wb"))
Mit*_*eat 11
当您打开文件时,打开以写为二进制文件"wb":
fopen(filename, "wb");
Run Code Online (Sandbox Code Playgroud)
在文本模式下打开时,会发生Line Feeds(0A)和Carriage Returns(0D)的转换.
fopen 带有"wb"的二进制模式的文件.
fopen(filename, "wb");
Run Code Online (Sandbox Code Playgroud)
否则,库中的代码将执行自动行结束翻译(在Windows 上的Windows上,不是吗?这意味着转换'\n'为'\r' '\n').
| 归档时间: |
|
| 查看次数: |
7044 次 |
| 最近记录: |