Citire si scriere de caractere

Cel mai simplu consola I / O funcții sunt getchar (). care citește un caracter de la tastatură, și putchar (). care afișează un caracter pe ecran. Prima dintre aceste funcții așteaptă până când este apăsată o tastă, iar apoi returnează valoarea acestei chei. În plus, atunci când apăsați o tastă de pe tastatura de pe ecranul de afișare afișează automat simbolul corespunzător. A doua funcție, putchar (). Acesta afișează un simbol pe ecran la poziția curentă a cursorului. Aici sunt getchar prototipuri () și putchar ().

După cum se poate observa din stadiul tehnicii, se crede că getchar funcția () returnează un rezultat. Cu toate acestea, valoarea returnată poate fi setată la o variabilă de tip char. și este de obicei, ca un simbol conținut în octetul scăzut. (High Byte, astfel, de obicei, eliminate.) În cazul în care getchar () returnează EOF eroare. (EOF Macro determinată și adesea este -1).

În ceea ce privește putchar (). că, în ciuda faptului că această funcție este declarată ca primirea unui parametru, acesta este de obicei cauzată de un argument caracter. De fapt, de la display-uri argument numai octetul scăzut. putchar () funcția returnează caracterul scris, sau, în cazul unei erori, EOF.

Programul următor demonstrează utilizarea getchar () și putchar (). În acest program, intrarile de la tastatura sunt introduse, iar apoi acestea sunt afișate într-un registru diferit. Adică, caracterele introduse în cazul de sus, sunt afișate în partea de jos, și a introdus în partea de jos - sunt afișate în partea de sus. Pentru a opri programul, introduceți punctul.

(Acest program nu este de lucru, dar cu caractere chirilice.)

dificultatea de utilizare getchar ()

Utilizarea getchar () poate fi asociată cu anumite dificultăți. În multe biblioteci, compilatoare, această funcție este implementată în așa fel încât să umple bufferul de intrare, atâta timp cât este apăsată tasta . Aceasta se numește o intrare tamponată-line. Pentru a funcționa getchar () a returnat un simbol, apăsați tasta . În plus, această funcție de fiecare dată când îl numesc introduce un singur caracter. Prin urmare, păstrarea tamponului șir de caractere poate duce la ceea ce este în coada de așteptare pentru intrarea va aștepta pentru unul sau mai multe caractere și mediu interactiv irită destul de puternic. Deși getchar () și poate fi folosit ca o funcție interactivă, dar acest lucru se face foarte rar. Deci, în cazul în care programul precedent nu se comportă așa cum era de așteptat, atunci acum știi ce se întâmplă.

Alternative getchar ()

Deoarece getchar (). disponibile în biblioteca de compilator poate să nu fie adecvat într-un mediu interactiv, o altă caracteristică, poate fi necesar pentru a citi caractere de la tastatură. În standard C, limba nu specifică nicio funcție care ar garanta o intrare interactivă, dar definițiile lor sunt literalmente în bibliotecile tuturor compilatoare C. Și să standardul cu aceste funcții nu sunt definite, dar ele sunt cunoscute tuturor! Și ei sunt datorită getchar funcție cunoscută (). care, evident, nu se aplică în cazul majorității programatorilor.

Două dintre getch () și getche funcții alternative comune () are următorul prototip:

În bibliotecile de cele mai multe compilatoare prototipuri ale acestor funcții sunt în fișierul antet . În biblioteci, compilatoare unele nume ale acestor funcții încep cu o subliniere (_). De exemplu, în Visual C ++ la Microsoft, acestea sunt numite _getch () și _getche ().

Funcția getch () așteaptă intrarile de la tastatura, după care se întoarce imediat. În plus, caracterul introdus de la tastatură, nu este afișat pe ecran. Există, de asemenea, getche) funcția (. care, deși este la fel ca getch (). dar caracterul apare pe ecran. Și în cazul în care programul on-line ar trebui să citească caracterul de la tastatură, este de multe ori în loc de getchar () este utilizat getche () și getch (). De exemplu, programul precedent, în care getchar () se înlocuiește cu getch) funcția (.

Când executați această versiune a programului, de fiecare dată când apăsați simbolul corespunzător este transmis imediat, iar programul este afișat pe un alt registru. Și, intrând în liniile nu sunt tamponate. Deși codurile din această funcție getch carte () și getche () nu mai există, dar ele pot fi utile în acele programe pe care le scrieți.

Apoi, când a scris aceste cuvinte, atunci când se utilizează C ++ compilator Visual funcția Microsoft _getch () și getch () nu erau compatibile cu funcțiile standard C de intrare, cum ar fi scanf () sau devine (). Prin urmare, trebuie să utilizați versiunile lor speciale, cum ar fi cscanf () sau cgets () în locul funcțiilor standard. Pentru a obține mai multe informații, ar trebui să consultați documentația pentru Visual C ++.