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 чтобы решить это для вас.

Другие вопросы по тегам