【问题标题】:Write exactly N raw binary bytes to a file in C将 N 个原始二进制字节准确写入 C 中的文件
【发布时间】:2020-10-31 22:58:37
【问题描述】:

我正在编写一些损坏文件的软件。它将文件存储在缓冲区中,通过使用随机掩码异或来破坏该缓冲区,然后将修改后的缓冲区写入标准输出,以便(linux)用户可以将其通过管道传输到某个地方。

我已经以二进制模式打开了标准输出:

FILE *const out = fdopen(dup(fileno(stdout)), "wb");

但是我实际上如何一次将整个缓冲区写入out

看来我有两个选择:

  1. 迭代所有字节并执行fputc
  2. 希望数据中没有空字节,做fputs

我正在寻找fputb,它需要:

  • 指向要写入的数据的指针
  • 要写入的文件描述符
  • 要写入的字节数

(比fputc-loop 具有更好的性能)

【问题讨论】:

  • 每天花时间阅读标准库函数的描述。这样做一个星期左右。在那之后,您至少会记住它们的存在(甚至可能是它们的名字)。另外:在 Unix 手册页中,有一个“另见”部分,具有相关功能。

标签: c


【解决方案1】:

你正在寻找fwrite ( const void * ptr, size_t size, size_t count, FILE * stream ):

ptr指向的内存块到stream中的当前位置写入一个count元素数组,每个元素的大小为size字节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    相关资源
    最近更新 更多