所以我的任务是用 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/