[mdk-re] C/C++ question

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_mivlgu=2Emurom=2Eru?=
Чт Май 3 14:02:01 MSD 2001


On Tue, 1 May 2001 00:59:34 +0400
Serge Skorokhodov <suralis на pisem.net> 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[++] положено писать либо '\r', либо '\015'. А управляющим
символам в файле делать нечего.

Если таких мест много, можно сделать, например:

  perl -pi -e 's,\015,\\015,g' file.c




Подробная информация о списке рассылки community