![]() |
|
Модераторы: bsa |
![]()
|
|
| Compositum |
|
|||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Код на С
Читаю строку из текстового файла, содержимое которого такое: 01234 В конце строки я не нажимаю Enter и не могу перейти на вторую строку стрелкой на клавиатуре. Ожидаю, что мой код выдаст количество символов равным 5. Однако получаю такой результат: ![]() Т.е. не зависимо от того, что я не нажимал Enter символ \n все равно был добавлен текстовым редактором к моей строке? Ещё не понял такого момента: символ \n представлен двумя байтами (иначе как объяснить, наличие пустой строки в выводе на скрине)? Для того, чтобы представить число 10, хватит и одного байта... Чего-то я не понял... |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
во-первых, какой именно редактор ты используешь? Vim, действительно, не позволяет сделать файл без пустой последней строки. С nano я так толком в этом вопросе не разобрался. На мой взгляд, самый адекватный консольный редактор - mcedit (Midnight Commander).
во-вторых, так как ты выводишь не только код символа, но и сам символ, то и происходит переход на новую строку. попробуй в printf заключить %c в апострофы. |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
| Compositum |
|
||||||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
В Ubuntu 11.04 текстовым редактором по умолчанию установлен gedit - в нём и пишу код. Ну хорошо, пусть текстовый редактор добавляет в конце '\n', но почему в выводе перед этим символом у меня присутствует пустая строка (без символа и без его числового значения)? Если бы это был некий непечатаемый символ - тогда хотя бы числовое значение присутствовало, а тут - даже этого нет... ???
Попробовал, теперь результат выглядит так, как я и ожидал вначале: ![]() Т.е. несмотря на то, что символ '\n' имеет код 10, который представляется одним байтом, тем не менее указанный символ кодируется двумя байтами? Я верно понимаю (иначе как объяснить наличие пустой строки, показанной мною на скрине в первом посте топика и его отсутствие на втором, когда непечатаемый символ отображаем как '?')? Это сообщение отредактировал(а) Compositum - 11.5.2011, 06:44 |
||||||
|
|||||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Нет. Вывод символа с кодом 10 ('\n') в консоль вызывает перевод строки. Именно этот перевод строки вы и видели в первом посте |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |