[mdk-re] C/C++ question
Michael Ivanov
=?iso-8859-1?q?ivans_=CE=C1_isle=2Espb=2Eru?=
Чт Май 3 20:24:01 MSD 2001
On 1 May 2001 00:59, you wrote:
> On Mon, 30 Apr 2001 21:16:55 +0400
>
> Michael Ivanov <ivans на isle.spb.ru> wrote:
> > On 30 April 2001 14:11, you wrote:
> >
> > В одной программе на "двухкрестовом" столкнулся со строчкой,
> >
> > > наподобие следующего отрывка:
> > >
> > > char buf[BUFSIZ];
> > > // ...
> > > if ( buf[0] == '\n' || buf[0] == '<cr>' )
> > > ^^^^^^^^^^^^^^^^
> >
> > А это не _один_ символ с кодом '\r'? По крайней мере nedit его
> > отображает именно так.
>
> Да, а я тут, старый дурень, дискуссии о симантике С-подобных
> языков веду:)
>
> Но, если честно, то мне еще непонятнее: В nedit это отображается
> '<cr>', в xemacs -- '^M', а мс его вообще не отображает, и при
> просмотре, и при редактировании просто ''. Как выяснить, какой же
> символ в программе. Я всегда думал, что исходный текст есть
> исходный текст, ascii есть ascii. А тут и я, и компилятор в
> затруднении, и неизвестно, какая тулза из богатого инструментария
> *nix может помочь:(
Нет, это просто исходник кривой. Спецсимволы в C положено задавать
с помощью escape-последовательностей (в вашем случае \r). А тулза
есть, sed называется: "sed -e 's/^M/\\r/'" :-)
P.S.: Только ^M с терминала нужно вводить как неинтерпретируемый
спецсимвол: ctrl+V ctrl+M
--
\ / | |
(OvO) | Michael Ivanov |
(^^^) | Voice: +7 (812) 328-1907 |
\^/ | E-mail: ivans на isle.spb.ru |
^ ^ | |
Подробная информация о списке рассылки community