\ B және \ r в C-да пайдалану

\b and \r are rarely used in practice. I just found out that I misunderstood these two escape sequences. A simple test:

printf("foo\bbar\n");

I expected it to output fobar, because \b will backspace the cursor, and b will overwrite the second o, but instead it outputs: foobar

Сонымен \ r :

printf("foo\rbar\n");

\ r деп ойладым, курсорды ағымдағы жолдың басына жылжытады, сондықтан bar ауыстырады foo , сондықтан соңғы шығару < код> бар . Дегенмен, ол шынында да нәтиже береді:

foo
bar
42
Бұл жолда ASCII 8, және 13 CR. Ескі смарт консоль оларды бұйрық ретінде түсіндіре алар еді (сол сияқты Unix бұйраларын қараңыз). Жалпы алғанда \ r жол үзілімі ретінде түсіндірілуі мүмкін. Шын мәнінде сіз ең жарамсыз екі таңбаны таптыңыз.
қосылды автор Joop Eggen, көзі
Бұл жолда ASCII 8, және 13 CR. Ескі смарт консоль оларды бұйрық ретінде түсіндіре алар еді (сол сияқты Unix бұйраларын қараңыз). Жалпы алғанда \ r жол үзілімі ретінде түсіндірілуі мүмкін. Шын мәнінде сіз ең жарамсыз екі таңбаны таптыңыз.
қосылды автор Joop Eggen, көзі
Бұл жолда ASCII 8, және 13 CR. Ескі смарт консоль оларды бұйрық ретінде түсіндіре алар еді (сол сияқты Unix бұйраларын қараңыз). Жалпы алғанда \ r жол үзілімі ретінде түсіндірілуі мүмкін. Шын мәнінде сіз ең жарамсыз екі таңбаны таптыңыз.
қосылды автор Joop Eggen, көзі
@Chris дегеніміз \ b және \ r нені білдіреді?
қосылды автор Yu Hao, көзі
@Chris дегеніміз \ b және \ r нені білдіреді?
қосылды автор Yu Hao, көзі
@suspectus Мен онлайн gcc қолданды compileonline.com/compile_c_online.php
қосылды автор Yu Hao, көзі
@suspectus Мен онлайн gcc қолданды compileonline.com/compile_c_online.php
қосылды автор Yu Hao, көзі
@suspectus Мен онлайн gcc қолданды compileonline.com/compile_c_online.php
қосылды автор Yu Hao, көзі
@YuHao Олар ештеңе жасамайды. Олар жай ғана кейіпкерлер. Бірақ сол таңбаларды жазатын болсаңыз, сол таңбаларды алған кезде белгілі бір жолмен әрекет етуі мүмкін. мысалы, егер сіз сол таңбаларды файлға жазсаңыз, онда таңба файлда аяқталады. Егер оны терминалға/консольге жазсаңыз, онда терминал кейіпкерді көргенде кейіпкерлерді өшіре алады \ b Кейбір терминалдар мұны істейтін болса, кейбіреулері болмайды.
қосылды автор nos, көзі
@YuHao Олар ештеңе жасамайды. Олар жай ғана кейіпкерлер. Бірақ сол таңбаларды жазатын болсаңыз, сол таңбаларды алған кезде белгілі бір жолмен әрекет етуі мүмкін. мысалы, егер сіз сол таңбаларды файлға жазсаңыз, онда таңба файлда аяқталады. Егер оны терминалға/консольге жазсаңыз, онда терминал кейіпкерді көргенде кейіпкерлерді өшіре алады \ b Кейбір терминалдар мұны істейтін болса, кейбіреулері болмайды.
қосылды автор nos, көзі
сіз қандай платформаға қатысасыз?
қосылды автор suspectus, көзі
сіз қандай платформаға қатысасыз?
қосылды автор suspectus, көзі
қосылды автор ctn, көзі
қосылды автор ctn, көзі
қосылды автор ctn, көзі
Сұрақ қайда?
қосылды автор Chris, көзі
Сұрақ қайда?
қосылды автор Chris, көзі

8 жауаптар

Таңбалар негізгі шығыс құрылғысына дәл сол сияқты жіберіледі (сіздің жағдайда терминал эмуляторы болуы мүмкін).

Терминалдың іске қосылуына қарай сол кейіпкерлердің нақты көрсетілуі. Мысалы, қоңырау ( \ a ) кейбір терминалдардағы дыбыстық сигналды, экрандағы жарқылдың пайда болуын тудыруы мүмкін немесе ол мүлдем еленбейді. Мұның барлығы терминалдың теңшелуіне байланысты.

50
қосылды
сіз қоңырауды қалай теңшеуге болатынын білесіз бе, ол қоңырауды елемейді (\ a)?
қосылды автор mf_, көзі

Таңбалар негізгі шығыс құрылғысына дәл сол сияқты жіберіледі (сіздің жағдайда терминал эмуляторы болуы мүмкін).

Терминалдың іске қосылуына қарай сол кейіпкерлердің нақты көрсетілуі. Мысалы, қоңырау ( \ a ) кейбір терминалдардағы дыбыстық сигналды, экрандағы жарқылдың пайда болуын тудыруы мүмкін немесе ол мүлдем еленбейді. Мұның барлығы терминалдың теңшелуіне байланысты.

50
қосылды
сіз қоңырауды қалай теңшеуге болатынын білесіз бе, ол қоңырауды елемейді (\ a)?
қосылды автор mf_, көзі

Таңбалар негізгі шығыс құрылғысына дәл сол сияқты жіберіледі (сіздің жағдайда терминал эмуляторы болуы мүмкін).

Терминалдың іске қосылуына қарай сол кейіпкерлердің нақты көрсетілуі. Мысалы, қоңырау ( \ a ) кейбір терминалдардағы дыбыстық сигналды, экрандағы жарқылдың пайда болуын тудыруы мүмкін немесе ол мүлдем еленбейді. Мұның барлығы терминалдың теңшелуіне байланысты.

50
қосылды
сіз қоңырауды қалай теңшеуге болатынын білесіз бе, ол қоңырауды елемейді (\ a)?
қосылды автор mf_, көзі

0x08 және 0x0d таңбалар кодын тең белгілейді - 0x0d . Операциялық жүйе осы кейіпкерлерге қалай әрекет ететіні өзгереді. Артқа ескі телетайпаны эмуляциялауға тырысқан кезде, сол әрекеттер стандартталған, бірақ олар заманауи орталарда пайдалы және үйлесімділік кепілдігі жоқ.

9
қосылды
Tthe стандартында таңба коды не екенін білмейді. 0x08 егер 0x08 0x08 болса, атқарушы таңбалар жинағындағы Backspace таңбасына сәйкес келеді (ASCII және Unicode және басқа да жалпы таңбалар жиыны). Егер орындалатын таңбалар жинағы EBCDIC болса, онда \ b кодты \ 0x16 (егер мен интернетте табылған таңбалар кестелеріне сенім арта алсам).
қосылды автор Adrian McCarthy, көзі

0x08 және 0x0d таңбалар кодын тең белгілейді - 0x0d . Операциялық жүйе осы кейіпкерлерге қалай әрекет ететіні өзгереді. Артқа ескі телетайпаны эмуляциялауға тырысқан кезде, сол әрекеттер стандартталған, бірақ олар заманауи орталарда пайдалы және үйлесімділік кепілдігі жоқ.

9
қосылды
Tthe стандартында таңба коды не екенін білмейді. 0x08 егер 0x08 0x08 болса, атқарушы таңбалар жинағындағы Backspace таңбасына сәйкес келеді (ASCII және Unicode және басқа да жалпы таңбалар жиыны). Егер орындалатын таңбалар жинағы EBCDIC болса, онда \ b кодты \ 0x16 (егер мен интернетте табылған таңбалар кестелеріне сенім арта алсам).
қосылды автор Adrian McCarthy, көзі

Backspace және каретку қайтару таңбаларын түсіндіру көрсету үшін қолданылатын бағдарламаға қалдырылады. Терминал эмуляторы \ b көрсету кезінде жүгіргіні бір қадам артқа жылжытады және жолдың басына \ r көрсетеді. Егер осы таңбаларды басқа жерде басып шығарсаңыз, мәтіндік файл сияқты, бағдарламалық жасақтама таңдай алады. басқа нәрсе істеу.

4
қосылды

C Primer Plus-те сипатталған әр таңбаның мағынасына келетін болсақ, сіз «дұрыс» жауап деп күтілуде. Бұл кейбір компьютерлік сәулет және компиляторларға қатысты болуы керек, бірақ, өкінішке орай, сенің емес.

I wrote a simple c program to repeat your test, and got that 'correct' answer. I was using Mac OS and gcc. enter image description here

Сондай-ақ, сіз қолданып отырған компилятордың не екенін білгім келеді. :)

1
қосылды
Пожалуйста коды коды ретінде жіберіңіз; сурет емес
қосылды автор Prateek, көзі

I have experimented many of the backslash escape characters. \n which is a new line feed can be put anywhere to bring the effect. One important thing to remember while using this character is that the operating system of the machine we are using might affect the output. As an example, I have printed a bunch of escape character and displayed the result as follow to proof that the OS will affect the output.

0
қосылды
Кодтар мәтін болуы керек, сондықтан сіз бұл жерде жарияланбайтын шығарылымдар үшін суреттерді кірістіре аласыз, себебі ол жергілікті машиналарда көрсетілмейді.
қосылды автор Prateek, көзі