В вашем коде вам не нужен массив символьных указателей - вам нужен массив символов:
while (some condition)
{
char line[WORDLEN];
Теперь каждый раз в цикле переменная строка имеет неопределенное содержание - теоретически. В частности, в первый раз он не имеет определенного значения. Итак, вы должны инициализировать его:
char line[WORDLEN] = "";
или
char line[WORDLEN];
line[0] = '\0';
Теперь вы можете безопасно выполнять закомментированные операции, в том числе (в частности) strcat()
. ( Ну, это предполагает, что вы можете безопасно выполнить strcat()
- это возможно, если вы знаете длину данных, уже находящихся в целевой строке, размер буфера целевой строки и длину добавленной строки и проверили, достаточно ли места для хранения того, что вы хотите. Если вы не знаете, что места достаточно, то вы движетесь к сбоям. )
//do stuff to line, including strcat(line, "words")
printf("%s", line);
line[0] = '\0';
При инициализации в начале цикла это назначение в конце становится излишним.
}