C - 连接字符数组,然后写入与写入单个字符不同的标准输出

标签 c arrays char mandelbrot

所以我的任务是用 C 语言创建曼德尔分形。 我将保持代码简单,因为它非常多。 问题:

  • 在给定的文件中,每个像素(char[3])被单独计算,然后通过write(1, pixeldata, 3)写入标准输出

  • 现在:因为这不是很有效,我想先收集一个字符数组 char line[width*3] 中一行的所有像素

  • 一切正常,除了输出与之前的输出有很大不同(颜色看起来移位等)

代码如下:

char pixelData[3];
char line[width*3];
for (y=1; y <= height; ++y) {
...
    for (x=1; x <= width; ++x) {
    ... calculate ...

    // iterate
        for ( .... calculate ...) {
               ... calculate ....
        }
        strncat(line, pixelData, 3);        // after
        // write(1, pixelData, 3);  // before: worked
}
write(1, line, sizeof(line)); // after
memset(line, 0, sizeof(line));

如果有人能告诉我,我在这里做错了什么,那就太好了…… 提前致谢:)

最佳答案

您不能将字符串函数用于可能包含 0 的 char 数组,也不能用于不是以 0 结尾的 char 数组。我相信您代码中的 pixelData 只是三个小整数的数组,而不是可打印的字符串。所以 strncat 不会帮助你。另一方面,由于您始终知道您的线路有多长,因此您不需要 strncat 来为您计算。

关于C - 连接字符数组,然后写入与写入单个字符不同的标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43901163/

相关文章:

objective-c - 克隆一个 git 仓库(深入)

c - 通过指向第一个结构的指针初始化结构内的结构

c - 将结构附加到文件

arrays - Swift:在多维数组上使用 .contains

c - 从特定格式的文本文件中读取

c - 为什么我的数组打印出副本?

arrays - 重复数组行指定次数

字符数组不会编译

位串的字符数组

c++ - 机器相关指针值的混淆