什么是char
JavaScript中使用的保留关键字(因为类型声明不是必需的),特别是,使用它的正确语法是什么(有人可以给我一个正确的完整示例)?
因为写作 char c;
抛出一个解释错误说missing ; before statement
,就在之前c
?
我正在尝试从头开始创建BMP文件,当时我发现了一个我无法解释的奇怪错误.我在这个极简主义程序中找出了错误:
int main()
{
FILE* ptr=NULL;
int success=0,pos=0;
ptr=fopen("test.bin","w");
if (ptr==NULL)
{
return 1;
}
char c[3]={10,11,10};
success=fwrite(c,1,3,ptr);
pos=ftell(ptr);
printf("success=%d, pos=%d\n",success,pos);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
success=3, pos=5
Run Code Online (Sandbox Code Playgroud)
使用test.bin
文件的十六进制转储:
0D 0A 0B 0D 0A
Run Code Online (Sandbox Code Playgroud)
简而言之,无论你输入什么值而不是11
(0x0B),fwrite
都会正确写入.但由于某种原因,当fwrite
遇到10
(0x0A) - 并且恰好是这个值时 - 它会写入0D 0A
,即2个字节,尽管我在fwrite
参数中每次写入时明确指定了1个字节.因此,3个字节写入,如可在可见success
变量,神秘5
的ftell
结果.
有人可以告诉我这里到底发生了什么......为什么10,为什么不97或28?
非常感谢您的帮助!
编辑:哦等等,我想我有一个想法......这不是与Unix上的0A和Windows上的0D 0A以及编译器的一些内部特征转换为另一个相关联吗?我怎么能强制它写出我想要的字节呢?