C - Конкатенация массивов символов, затем запись в стандартный вывод, отличный от написания отдельных символов
Поэтому у меня есть задача создать фракталы Манделя в C. Я буду держать код простым, так как он довольно большой. Эта проблема:
в данном файле каждый пиксель (char[3]) рассчитывается отдельно и затем записывается в стандартный вывод посредством записи (1, pixeldata, 3)
СЕЙЧАС: так как это не очень эффективно, я хочу сначала собрать все пиксели одной строки в строке char char char [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));
}
Было бы очень круто, если бы кто-то мог мне сказать, что я тут не так сделал... Заранее спасибо:)
1 ответ
Вы не можете использовать строковые функции с char
массивы, которые могут содержать 0, ни с char
массивы, которые не являются 0-концевыми. я полагаю, что pixelData
в вашем коде это просто массив из трех маленьких целых чисел, а не печатаемая строка. Так strncat
не поможет тебе С другой стороны, поскольку вы всегда знаете, какова длина вашей строки, вам не нужно strncat
чтобы решить это для вас.