Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: Apache в Aug 30, 2005, 19:11



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


Титла: Въпрос относно < CR >
Публикувано от: romeo_ninov в Aug 30, 2005, 20:36
Знак за край на ред :-D


Титла: Въпрос относно < CR >
Публикувано от: luda_glawa в Aug 30, 2005, 21:12
<CR> - carriage return - връща каретката (курсора) в началото на реда.

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

Wikipedia

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


Титла: Въпрос относно < CR >
Публикувано от: romeo_ninov в Aug 30, 2005, 21:35
Цитат (luda_glawa @ Авг. 30 2005,22:12)
Между другото обърни внимание и на <LF> - line feed.  Обикновенно двете се използват заедно - <CR><LF>.

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


Титла: Въпрос относно < CR >
Публикувано от: luda_glawa в Aug 30, 2005, 21:52
Защо само за Уиндоус?


Титла: Въпрос относно < CR >
Публикувано от: romeo_ninov в Aug 31, 2005, 10:21
Цитат (luda_glawa @ Авг. 30 2005,22:52)
Защо само за Уиндоус?

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


Титла: Въпрос относно < CR >
Публикувано от: astronom в Aug 31, 2005, 11:01
Цитат (luda_glawa @ Авг. 30 2005,21:52)
Защо само за Уиндоус?

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

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