| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > fputs() - конвертинг "\0" -> "\n" |
| Автор: ressac 29.3.2007, 21:44 | ||
| fputs(); выше указанная функция по идее должна конвертить конечный символ "\0" маcсива в "\n" чтоб слова при записи в файл не сливались... или я что-то путаю?
|
| Автор: apook 29.3.2007, 21:58 |
| А что вообще должно получиться fputs( "", pf ); // вообще-то сам внесет '\n'; |
| Автор: ressac 29.3.2007, 21:59 |
| apook, в том то дело что и не вносит |
| Автор: apook 29.3.2007, 22:26 | ||
Проблема в другом переменная word большого размера и пока не наполнится gets считает что это не есть конец строки |
| Автор: ressac 29.3.2007, 22:51 | ||
apook, ну это в принципе одно и тоже, просто "\n" добавляет fgets, а fputs работал так как и раньше...
только что пробывал это сделать и тот-же самый результат ,если это делать с gets(); вообщем мой вопрос в том что если fputs() находит "\0" почему он его не конверит в "\n" в файле, а пишет просто всё вместе. плюс когда fgets() читает из файла он вроде бы тот-же "\n" должен менять на "\0", когда он просто ставит "\0" после "\n" |
| Автор: apook 29.3.2007, 22:54 | ||
непонел
это так работает? |
| Автор: ressac 29.3.2007, 23:00 |
| работает как? работает так как и раньше только ты поменял gets на fgets.. и ещё +/- прочитай моё сообще выше я его доредактил.. |
| Автор: apook 29.3.2007, 23:35 |
| так ты хочешь чтоб '\n' не было? fputs и puts всегда добавляет '\n' у меня твой код выводит в файл с концом строки т.е каждая строка отдельно |
| Автор: ressac 30.3.2007, 00:04 | ||
| apook, я хочу чтоб он был, но чтоб его добавлял САМ fputs() но он этого не делает!. у меня все слова склеиваются если я перестану насильно впихивать "\n" в файл, понимаешь? всё коды что выше написаны тут мной и тобой они насильно впихивают "\n" в файл одним или другим способом, в то время как по идее fputs сам должен это делать... даже если мы будет давать выход на экран fputs(word,stdout); он серовно не будет ставить "\n" после слова и не важно следущее :
ни в первом ни во втором случае (не с файлом не с stdout ) а puts(); да он всегда ставит "\n" |
| Автор: apook 30.3.2007, 00:20 | ||
где тут насильное впихивание '\n' |
| Автор: apook 30.3.2007, 00:45 |
| |
| Автор: ressac 30.3.2007, 00:47 | ||
| =) fgets() впихивает его, ты вот даже ставишь сравнение "END\n" а не просто "END" потому что там уже есть это НОВАЯ ЛИНИЯ ты понимаешь? или я тебя понимаю ? добавь в while следущее:
предпоследней цифрой должно быть 10 по таблице ASCII это и есть \n а последней будет 0 а это и есть конец массива \0 |
| Автор: ressac 30.3.2007, 01:03 |
| |
| Автор: ressac 30.3.2007, 10:08 |
| Fazil6, у меня в книге это написано |
| Автор: Fazil6 30.3.2007, 10:22 | ||
|
| Автор: JAnty 30.3.2007, 11:12 |
| А у меня во что написано: ---- Функция fputs #include <cstdio> int fputs(const char *str, FILE *stream); Функция fputs() записывает в указанный поток содержимое строки, на которую ссылается указатель str. Нулевой символ, служащий индикатором конца файла, в поток не саписывается. В случае успеха функция fputs() возвращает положительное, а в противном случае - константу EOF. Если поток открыт в текстовом режиме, может происходить преобразование некоторых символов. Это значит, что однозначного соответствие между строкой и файлом не существует. В двоичном режиме подобные преобразования не выполняются, и строка точно соответствует содержимому файла. ---- Пользуйся fprintf(); |