Počkajte na vstup používateľa: jazyk C.

Wait User Input C Language



V programovacom jazyku C existuje niekoľko vstupných funkcií. Pomocou týchto funkcií môžeme čakať na vstup používateľa. V tomto tutoriáli sa budeme podrobne zaoberať vstupnými funkciami.

Formátovací reťazec

Formátovací reťazec je formát pre zadané údaje. Tento formát začína znakom % a nasleduje špecifikátor formátu. Špecifikátor formátu je špecifický znak, ktorý sa používa pre typ údajov, ktoré sa čítajú.







arg1, arg2, arg3 ... sú adresy premenných, kde budú uložené údaje uložené.



funkcia scanf ()

Syntax: int scanf (formátovací reťazec, arg1, arg2, arg3 ...)



Niektoré z často používaných špecifikátorov sú nasledujúce:





  • d - Používa sa pre celočíselné hodnoty.
  • f - Používa sa na plávajúce číslo.
  • c - Používa sa pre hodnotu jedného znaku.
  • s - Používa sa na struny.

Použitie single scanf () funkciu, jeden alebo viac vstupov je možné vziať od užívateľa.

The scanf () funkcia preberá vstup zo štandardného vstupu (klávesnica) a uloží hodnotu do premennej. Funkcia čaká na zadanie užívateľa, kým používateľ nestlačí kláves Enter. Zadaná hodnota sa ukladá do vyrovnávacej pamäte. Keď stlačíte kláves Enter, scanf () funkcia začne čítať.



Príklad 1: Celočíselný vstup

//Priklad1.c
#zahrnúť

intHlavná(){

inti;
printf („Zadajte hodnotu prvého celého čísla:“);
scanf ('%d', &i);
printf ('Zadali ste: %d n',Ja);

printf („Zadajte 2. celočíselnú hodnotu:“);
scanf ('%d', &i);
printf ('Zadali ste: %d n',Ja);

vrátiť sa 0;
}

V Príklade1.c sme videli, že keď sme zadali celočíselné hodnoty a stlačili kláves Enter. The scanf () funkcia vezme hodnotu a uloží ju do premennej. Ak zadáme hodnoty oddelené medzerou, funkcia sa vráti, keď narazí na priestor, ale hodnoty za medzerou zostanú vo vstupnej vyrovnávacej pamäti. Preto ten druhý scanf () funkcia nebude čakať na vstup používateľa, namiesto toho prevezme vstup z vyrovnávacej pamäte.

Príklad 2: Vstup jedného znaku

//Priklad2.c
#zahrnúť

intHlavná(){

charc;
printf („Zadajte znak:“);
scanf ('% c', &c);
printf ('Zadali ste: %c n',c);

vrátiť sa 0;
}

V Príklade2.c sme to videli, keď používame % c špecifikátor, scanf () funkcia má iba jeden znak, aj keď sme zadali viac ako jeden znak.

Príklad 3: Zadávanie jedného znaku (viackrát)

//Priklad3.c
#zahrnúť

intHlavná(){

charc;
printf („Zadajte prvý znak:“);
scanf ('% c', &c);
printf ('Zadali ste: %c n',c);

printf ('Zadajte druhý znak:');
scanf ('% c', &c);
printf ('Zadali ste: %c n',c);

vrátiť sa 0;
}

Príklad 4 :

//Priklad4.c
#zahrnúť

intHlavná(){

charc;
printf („Zadajte prvý znak:“);
scanf ('% c', &c);
printf ('Zadali ste: %c n',c);

printf ('Zadajte druhý znak:');
scanf ('% c', &c);
printf ('Zadali ste: %c n',c);

vrátiť sa 0;
}

Príklad 5: Reťazcový vstup

//Priklad5.c
#zahrnúť

intHlavná(){

charnázov[pätnásť];
printf ('Zadajte svoje meno: ');
scanf ('%s',názov);
printf ('Zadali ste: %s n',názov);

vrátiť sa 0;
}

funkcia getc ()

Syntax: int getc (FILE *stream)

getc () funkcia sa používa na čítanie znaku z ukazovateľa (streamu) FILE. Na čítanie z klávesnice musíme použiť stdin . Táto funkcia vracia celočíselnú hodnotu prečítaného znaku.

Príklad 6:

//Priklad6.c
#zahrnúť

intHlavná(){

charc;
printf („Zadajte prvý znak:“);
kým((c= getc (stdin))==' n');
printf ('Zadali ste: %c n',c);

kým( getc (stdin)! =' n');

printf ('Zadajte druhý znak:');
kým((c= getc (stdin))==' n');
printf ('Zadali ste: %c n',c);

vrátiť sa 0;
}

funkcia getchar ()

Syntax: int getchar (neplatné)

getchar () funkcia je rovnaká ako getc () . Jediným rozdielom je, že getc () funkcia môže čítať z akéhokoľvek vstupného toku, zatiaľ čo getchar () funkcia číta iba zo štandardného vstupu.

Príklad 7:

//Príklad7.c
#zahrnúť

intHlavná(){

charc;
printf („Zadajte prvý znak:“);
kým((c= getchar ())==' n');
printf ('Zadali ste: %c n',c);

kým( getchar ()! =' n');

printf ('Zadajte druhý znak:');
kým((c= getchar ())==' n');
printf ('Zadali ste: %c n',c);

vrátiť sa 0;
}

Záver

V tomto článku sme videli, ako sa vstupné funkcie používajú v jazyku C. Všetky tieto funkcie sú prevzaté zo vstupného buffera a keď tieto funkcie používame viackrát, musíme buffer vymazať. V opačnom prípade funkcie nebudú čakať na vstup používateľa a prevezmú vstup z vyrovnávacej pamäte.