Четене и писане на героите

Най-простият на конзолата I / O функции са getchar (). който гласи знак от клавиатурата, и putchar (). което показва характер на екрана. Първият от тези функции изчаква натискане на клавиш, а след това се връща стойността на този ключ. В допълнение, при натискането на клавиш от клавиатурата на екрана автоматично показва съответния символ. Втората функция, putchar (). Тя показва символ на екрана в текущата позиция на курсора. Това са прототипи getchar () и putchar ().

Както може да се види от предшестващото състояние на техниката, се счита, че getchar функцията () връща резултат. Въпреки това, стойността за връщане може да се настрои на променлива от тип Чар. и то обикновено е, като символ, съдържащ се в ниско байт. (High Byte по този начин обикновено изчиства.) Ако getchar () връща EOF грешка. (Macro EOF определя и често е 1).

Що се отнася до putchar (). че въпреки факта, че тази функция е обявен за получаване на параметър, обикновено е причинена от спор характер. В действителност, от неговите аргументи показва само ниската байт. putchar () връща героя писмено, или, в случай на грешка, EOF.

Следната програма демонстрира използването на getchar () и putchar (). В тази програма, клавиши са вписани, и след това те се показват в различен регистър. Това означава, че героите вписани в горния случай, се показват в долната част, както и въведени в долната част - да се показват в горната част. За да спрете програмата, въведете точката.

(Тази програма не работи, но с кирилица.)

трудност за употреба getchar ()

Използване getchar () може да бъде свързан с някои трудности. В много библиотеки, компилатори, тази функция се изпълнява по такъв начин, че да запълва вход буфер, докато ключът е натиснат . Това се нарича линия буфер вход. За да функционира getchar () се завърна в символ, натиснете клавиша . В допълнение, тази функция всеки път, когато го наричат ​​въвежда само един символ. Ето защо, опазването на низ буфер характер може да доведе до това, което е в опашката за влизане ще чака един или повече символа, и интерактивна среда дразни достатъчно силно. Въпреки getchar () и може да се използва като интерактивна функция, но това се прави рядко. Така че, ако предходната програма не се държи, както се очаква, то вие вече знаете какво се случва.

Алтернативи getchar ()

Тъй getchar (). на разположение в библиотеката на компилаторът не може да бъде подходящ в интерактивна среда, друга функция, може да се наложи да се чете символи от клавиатурата. В стандарта за C език не определя всяка функция, която ще гарантира интерактивен вход, но техните определения са буквално в библиотеките на всички компилатори В. И нека стандарта с тези функции не са определени, но те са известни на всички! И те са известни благодарение на getchar на функцията (). което очевидно не се отнася за повечето програмисти.

Двама от getch () и getche общи алтернативни функции () има следния прототип:

В библиотеките на повечето компилатори прототипи на тези функции са в заглавната част на файла . В библиотеки, компилатори имената на някои от тези функции започват с долна черта (_). Така например, в Visual C ++ за Microsoft, те се наричат ​​_getch () и _getche ().

getch () функция чака клавиши, след което тя веднага се връща. Освен това, характера влезе от клавиатурата, екранът не се показва. Има също getche () функция. който въпреки че е същата като getch (). но характерът се появява на екрана. И ако в онлайн програмата трябва да прочетете характер от клавиатурата, често вместо getchar () се използва getche () и getch (). Например, в предишната програма, в която getchar () се заменя със getch () функция.

Когато стартирате тази версия на програмата, при всяко натискане на съответния символ се предава веднага и програмата се показва различен регистър. И като влязоха в линии не са буферирани. Въпреки, че кодовете в тази книга функция getch () и getche () вече не е там, но те могат да бъдат полезни в тези програми, които пишете.

След това, когато той пише тези думи, когато с помощта на C ++ компилатор _getch функцията на Microsoft Visual () и getch () не са съвместими със стандартните C входни функции като scanf () или получава (). Поради това, че трябва да използват своите специални версии като cscanf () или cgets () вместо стандартните функции. За да получите повече информация, можете да се консултирате с документацията за Visual C ++.