C - 连接字符数组,然后写入与写入单个字符不同的标准输出
C - Concatenate char arrays, then write to stdout different to writing single chars
所以我的任务是在 C 中创建曼德尔分形。
我将保持代码简单,因为它非常多。
问题:
在给定的文件中,每个像素(char[3])被单独计算,然后通过write(1, pixeldata, 3)写入stdout
现在:因为这不是很有效,我想首先收集 char 数组中一行的所有像素 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 中创建曼德尔分形。 我将保持代码简单,因为它非常多。 问题:
在给定的文件中,每个像素(char[3])被单独计算,然后通过write(1, pixeldata, 3)写入stdout
现在:因为这不是很有效,我想首先收集 char 数组中一行的所有像素 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
为您算出。