Это не хорошо, ИМХО.
Во-первых, он не делает то, о чем вас просили. Вы должны были найти последний пробел после непустого перед границей выходной линии. Ваша программа даже не пытается это сделать удаленно, похоже, она пытается найти первые пробелы после (поля - 5) символов (откуда взялись 5? Что, если все слова имеют 9 букв?). Однако это также не происходит из-за ваших манипуляций с переменной newls. Также это:
for(line = 0; line < i; line++) {
if(array[0] == NEWLINE)
;
else
printf("%c", array[line]);
}
, вероятно, неправильно, потому что вы проверяете условие, которое никогда не меняется в цикле.
И, наконец, что не менее важно, хранение всего файла в буфере фиксированного размера не годится по двум причинам:
- буфер переполнен для больших файлов
- , даже если он никогда не переполнится, люди все равно не захотят, чтобы вы хранили, например. гигабайтный файл в памяти, просто чтобы разрезать его на 25-символьные куски
Я думаю, вам следует начать заново, переосмыслить свой алгоритм (включая угловые случаи) и только после этого начинать кодирование. Я предлагаю вам:
- обрабатывает файл построчно (имеется в виду выходные строки)
- сохранить строку в буфере, достаточно большом, чтобы вместить наибольшую строку вывода
- поиск символа, по которому вы будете разбивать, в буфере
- затем распечатайте его (подсказка: вы можете завершить строку с помощью '\ 0' и распечатать с помощью
printf("%s", ...)
), скопировать то, что вы не распечатали, в начало буфера, продолжить с этого