[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