C:将char数组(包含' 1'和' 0')写入文件中的二进制文件

时间:2017-12-02 20:24:02

标签: c arrays file binary fwrite

我在编写' 1'和' 0'作为文件中的二进制文件。 以下是我尝试做的一个例子:

int main(){
  FILE * file;
  file = fopen("file" , "w+b");

  char buffer[8] = "11001100"; // 8 bits-> 1 byte to write

  fwrite(buffer,1,8,file);

  fclose(file);
  return 0;
}

问题是它在文件中写入文本(写入8个字节),而不是二进制文件/只有1个字节。

我做错了什么?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我认为您可以使用0b前缀... GNU doc

0b说你正在写一个字节。

如果你写这样的想法:

int main(){
  FILE * file;
  file = fopen("file" , "w+b");
  char c;

  c = 0b11001100

  fwrite(&c,1,1,file);

  fclose(file);
  return 0;
}

答案 1 :(得分:-1)

您必须将包含二进制数字符串的字符串转换为字节。您可以自己执行此操作,也可以使用strtol()

执行此操作
char *buffer = "11001100"; // 8 chars
char *behind;
char byte = (char)strtol(buffer, &behind, 2); // Base 2 for a binary number

fwrite(&byte,1,1,file); // 1 element with 1 byte ach