Автор Тема: Въпрос относно < CR >  (Прочетена 2256 пъти)

Apache

  • Напреднали
  • *****
  • Публикации: 106
    • Профил
Въпрос относно < CR >
« -: Aug 30, 2005, 19:11 »
Здравейте !
Уча се да програмирам на C, та имам 1 въпрос.
Въведената от клавиатурата информация се записва в буфер и се обработва последователно. Това въвеждане завършва задължително с
< CR >, след което се активира входната функция. При обработката на информацията в буферът трябва да се има в предвид и въведеният
< CR > . Затова в програмата чрез функцията getchar на помощна променлива се присвоява ненужния  < CR > и се изчиства буферът от него.
Това беше извадка от 1 учебник. До колкото разбрах всеки път когато използвам scanf или getchar ( извън цикъл ) след тях трябва да изчиствам този символ от буфера.Както и да е, въпросът ми е, какво по-точно представлява този < CR > и по-важното - какво ще стане ако не го изчиствам ? И ако програмата не тръгва, то защо ? Мерси предварително.
Активен

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Въпрос относно < CR >
« Отговор #1 -: Aug 30, 2005, 20:36 »
Знак за край на ред :-D
Активен

0x2B|~0x2B

luda_glawa

  • Напреднали
  • *****
  • Публикации: 652
  • Distribution: Kubuntu
  • Window Manager: KDE
    • Профил
    • WWW
Въпрос относно < CR >
« Отговор #2 -: Aug 30, 2005, 21:12 »
<CR> - carriage return - връща каретката (курсора) в началото на реда.

А най-точно е обяснено тук:

Wikipedia

Между другото обърни внимание и на <LF> - line feed.  Обикновенно двете се използват заедно - <CR><LF>.
Активен

С Уважение:

Luda Glawa ;-)

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Въпрос относно < CR >
« Отговор #3 -: Aug 30, 2005, 21:35 »
Цитат (luda_glawa @ Авг. 30 2005,22:12)
Между другото обърни внимание и на <LF> - line feed.  Обикновенно двете се използват заедно - <CR><LF>.

Това е вярно само за Windows :-P
A <LF> означава превъртане на валяка с един ред. И двата термина водят началото си от телетипите, които са били първите терминали :-)
Активен

0x2B|~0x2B

luda_glawa

  • Напреднали
  • *****
  • Публикации: 652
  • Distribution: Kubuntu
  • Window Manager: KDE
    • Профил
    • WWW
Въпрос относно < CR >
« Отговор #4 -: Aug 30, 2005, 21:52 »
Защо само за Уиндоус?
Активен

С Уважение:

Luda Glawa ;-)

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Въпрос относно < CR >
« Отговор #5 -: Aug 31, 2005, 10:21 »
Цитат (luda_glawa @ Авг. 30 2005,22:52)
Защо само за Уиндоус?

Ами като гледам текстовите файлове под UNIX (Linux) имат само LF за нов ред:
Активен

0x2B|~0x2B

astronom

  • Напреднали
  • *****
  • Публикации: 254
    • Профил
Въпрос относно < CR >
« Отговор #6 -: Aug 31, 2005, 11:01 »
Цитат (luda_glawa @ Авг. 30 2005,21:52)
Защо само за Уиндоус?

Защото така са решили проектантите на съответната операционна система. Иначе в Линукс използването само на LF е наследство от UNIX, който пък го наследява от Multics. Apple пък използва само CR в тяхната операционна система до версия 9, след това и те използват само LF. В Windows пък е комбинация от двете (съответно наследство от DOS). За други платформи може да се използват съвсем различни контролни символи.

Ето и какво има в Wikipedia по въпроса - CRLF.
Активен

Г. Д. Сотиров