Прошу простить уважаемых членов сообщества,что,как и многие лезу с учебным,но просто не могу выловить баг...а хорошо бы это сделать к завтрашнему утру...
итак:
читать дальшеЕсть задача:
Скопировать содержимое текстового файла, ограничив длину строки N символами. Слова, не помещающиеся в заданную строку не копировать.
Есть решение,написанное мной:
читать дальше
paste.org.ru/?arsgx0
и при всех MAXLEN меньших 25 она работает чудесно. Но если MAXLEN превышает 24, программа не копирует вторую строку.
содержание тестового файла:
читать дальше
AAABBBCCCDDDdzvzdv zvzv
EEEEFFFFGGGGHHHHcszdcdzvdzvdz
IIIIIJJJJJKKKKKLLLLLzdvdzvdzdvzd
Помогите поправить баг...ибо препод любит их находить и отправлять на перездачу...Можно написать словами в чем он,но лучше поправьте код...
Про то,что calloc никто не юзает,а юзает malloc -знаю. Но здесь юзать надо calloc,ибо нам атк сказали.
Сейчас попробую переделать код. Можно в принципе в твоей ошибке разобраться, но влом сейчас этим заниматься...
хм..буду очень благодарен...
попробуй такой код, я правда его не проверял.. в идее я уверен на 100%, но мог что-нибудь напутать
перед строкой 31 (т.е. перед началом цикла) значение c должно быть проинициализировано последним считанным символом.
а так получается следующее - в случае если длина строки меньше максимальной, строка считается полностью, вместе с символом новой строки. И цикл будет посимвольно считывать и отбрасывать символы до следующего '/n' - то есть всю следующую строку. Не говоря уже о лишних '/n' в выходном файле
P.S. А препода я понимаю, за такие вещи на пересдачу отправлять мало. Надеюсь, специальность не программерская - тогда ещё более-менее понятно.
спасибо. касабельно лишних /n уже и сам понял. а реализация...не вижу ничего сильно критичного,кроме calloc(который попросили использовать) и не инициализированной последним символом переменной c.
Ну тут уж я не выдержал и запустил свой код, хотя собирался идти спать.. и я нашел ошибку. Мааленькую такую. знаешь, почему не копирует? Вместо " if (c=EOF) break;" надо написать " if (c==EOF) break;"
Мог бы и сам заметить
все-таки, одновременно писать на нескольких языках - это зло...
Хм...Все же это учебка. в нормальных проектах посимвольное чтения я не буду использовать.честно)
тык и я сонное уже,аки мух))
ну это да, но в лабораторных такого уровня сложности не ставится задача написать сверх оптимизированный код, по крайней мере у нас преподы смотрели по принципу "лишь бы работало"... да и загруженность различными учебными предметами не располагает к таким вещам, как самостоятельное усложнение заданий
спасибо за помощь))