小编MrB*_*ody的帖子

什么是'char'关键字用于?

什么是charJavaScript中使用的保留关键字(因为类型声明不是必需的),特别是,使用它的正确语法是什么(有人可以给我一个正确的完整示例)?

因为写作 char c;抛出一个解释错误说missing ; before statement,就在之前c

javascript char keyword

10
推荐指数
1
解决办法
4567
查看次数

fwrite无法写入值10(0x0A)

我正在尝试从头开始创建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变量,神秘5ftell结果.

有人可以告诉我这里到底发生了什么......为什么10,为什么不97或28?

非常感谢您的帮助!

编辑:哦等等,我想我有一个想法......这不是与Unix上的0A和Windows上的0D 0A以及编译器的一些内部特征转换为另一个相关联吗?我怎么能强制它写出我想要的字节呢?

c fwrite

2
推荐指数
1
解决办法
912
查看次数

标签 统计

c ×1

char ×1

fwrite ×1

javascript ×1

keyword ×1