![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| zzz |
|
|||
|
Unregistered |
народ, у меня назрел тут вопрос - "\n" - это два символа или один?
|
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
Один. Как в общем и \0 и другие
По моему -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Вано |
|
|||
|
Unregistered |
А откуда такой вопрос? Это в смысле тебе интересна как надо писать
'/n' или "/n" т.к.символ один то надо как в первом случае. |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 1 Всего: 62 |
Нет, писать надо "\n", ибо это escape-последовательность, воспринимается, как управляющий символ. См. хелп. |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
"\n" = crlf = (char)0xA, (char)0xD
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| zzz |
|
|||
|
Unregistered |
а почему тогда вот тут: char *a = "Hello!\n" в дампе a в конце только \x0A |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Ща тож посморел, тут нету возврата коретки, тут токо перевод строки...у меня спросто были ассоциации с ассемблером, там всегда строки определялись с 0ah и 0dh на конце и посему, я считал, что \n - это именно эквивалент crlf, хотя тут это токо перевод строки.
Так что вполне справедливо следующее: char Hello[8]; strcpy (Hello, "Hello!"); Hello[6] = '\n'; Hello[7] = '\0'; printf (Hello); Т.е. \n -это один символ. -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
А есть разница? |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Есть разница - стандарт DOS/Windows 13h 10h - конец строки и перевод каретки, хотя в 99% случаев только один символ тоже воспринимается корректно. Под Linux/Unix стандарт - только 13h (черт, забыл! - может и 10h - короче один из них)...
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Temnozor |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 27.6.2002 Где: Тюмень Репутация: нет Всего: нет |
Проблема затронута довольно серьезная. Я воевал с нечто подобным, разбираться было особо некогда и оставил все как есть. Может сейчас разрешим?
Есть строка в ресурснике:
Ее я выдаю в файл (создаю html-ку):
Все работает. Я бы не заметил проблемы, если бы не открыл однажды получившуюся html-ку в FrontPage. Мамочка моя! Вместо двух переходов на новую строку в редакторе FrontPage'а стало четыре, вместо одного - два. Открываю html-ку в бинарном виде, и точно:
И кто мне объяснит все это? В чем я согрешил? P.S. Может за одно подскажете можно ли покрасивее написать тоже самое вместо (CString)MAKEINTRESOURCE(IDS_P_CONTENT)? --------------------
Take a ride on, ride on, on your rotting horse on that deadly ground Take a ride, ride on, on your rotting horse with a pounding sound. |
||||||
|
|||||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Ответ прост
Используй функции Windows и все будет ок ;) HANDLE hFile = CreateFile ("c:\\test.TxT", GENERIC_WRITE, NULL, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL); char* pszBuffer = new char [0xFF]; memset (pszBuffer, 0, 0xFF); LoadString (theApp.m_hInstance, IDS_STRING102, pszBuffer, 0xFF); DWORD dwBytesWritten = 0; WriteFile (hFile, pszBuffer, strlen(pszBuffer), &dwBytesWritten, NULL); CloseHandle (hFile); -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Вопрос известен. Приколов с ним всегда хватало, пока не привыкнешь.
Конечно, символ '\n' один, как и просто 0D, но многие функции записи данных контролируют это дело, и считают своим долгом добавить к нему еще и символ 0A. Или наоброт... к 0А добавить 0D. А может и так и так. -------------------- Волны гасят ветер... |
|||
|
||||
| Alex101 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 891 Регистрация: 8.4.2002 Где: Москва Репутация: нет Всего: 10 |
С этим лучше не париться, а просто посмотреть, что получится...
Например, попробуйте в билдере открыть в ричэдите текстовый файл ДОС. Он в конце каждой строки будет выдавать символ 0x0A По идее, "\n" - это 0x0D.... -------------------- С уважением, А. Фролов. |
|||
|
||||
| a__drake |
|
|||
|
Unregistered |
Доброе время суток! Если ещё не разобрались, то... >>По идее, "\n" - это 0x0D.... \n == 0x0A \r == 0x0D функции printf/fprintf/puts/fputs автотматически заменяют \n на последовательность \r\n (это не компилятор делает!) В Досе конец строки обозначается _двумя_ символами, а именно \r\n BTW, функции cprintf/cputs (кто помнит turbo-C для ДОС? Что же качается разницы м/д '\n' и "\n" -- первое имеет тип char, второе char[2] (в конце ещё '\0' добавляется) Всего наилучшего! ЗЫ. В Унихе функция printf "\n" на "\r\n" не меняет. К чему бы это? |
|||
|
||||
| crimaniak |
|
|||
|
Unregistered |
Ох уж эти чайники!
\r=0x0A, \n=0x0D Если поток открыт в _текстовом режиме_ (а stdout именно в тесктовом режиме), то \n транслируется в \r\n. cr - возврат каретки (каретка переводится в начало _этой же_ строки) nl - переход на новую строку (в той же позиции). Если система не транслирует \n то вы можете увидеть вот такой текст. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |