Počkejte na vstup uživatele: jazyk C.

Wait User Input C Language



V programovacím jazyce C existuje několik vstupních funkcí. Pomocí těchto funkcí můžeme čekat na vstup uživatele. V tomto tutoriálu se budeme podrobně zabývat vstupními funkcemi.

Formátovací řetězec

Formátovací řetězec je formát pro zadaná data. Tento formát začíná znakem % a následuje specifikátor formátu. Specifikátor formátu je specifický znak, který se používá pro který typ dat se čte.







arg1, arg2, arg3 ... jsou adresy proměnných, kam budou zadaná data ukládána.



funkce scanf ()

Syntax: int scanf (formátovací řetězec, arg1, arg2, arg3 ...)



Některé z často používaných specifikátorů jsou následující:





  • d - Používá se pro celočíselné hodnoty.
  • F - Používá se pro plovoucí číslo.
  • C - Používá se pro hodnotu jednoho znaku.
  • s - Používá se pro struny.

Použití single scanf () funkce, lze uživateli odebrat jeden nebo více vstupů.

The scanf () funkce převezme vstup ze standardního vstupu (klávesnice) a uloží hodnotu do proměnné. Funkce čeká na zadání uživatele, dokud uživatel nestiskne klávesu Enter. Zadaná hodnota se ukládá do vyrovnávací paměti. Při stisknutí klávesy Enter scanf () funkce začne číst.



Příklad 1: Celočíselný vstup

// Příklad1.c
#zahrnout

inthlavní(){

int;
printf ('Zadejte hodnotu 1. celého čísla:');
scanf ('%d', &);
printf ('Zadali jste: %d n',);

printf ('Zadejte 2. celé číslo:');
scanf ('%d', &);
printf ('Zadali jste: %d n',);

vrátit se 0;
}

V příkladu1.c jsme viděli, že když jsme zadali celočíselné hodnoty a stiskli klávesu Enter. The scanf () funkce vezme hodnotu a uloží ji do proměnné. Pokud zadáme hodnoty oddělené mezerou, funkce se vrátí, když narazí na mezeru, ale hodnoty za mezerou zůstanou ve vstupní vyrovnávací paměti. Proto ta druhá scanf () funkce nebude čekat na vstup uživatele, místo toho převezme vstup z vyrovnávací paměti.

Příklad 2: Vstup jednoho znaku

// Příklad2.c
#zahrnout

inthlavní(){

charC;
printf ('Zadejte znak:');
scanf ('% c', &C);
printf ('Zadali jste: %c n',C);

vrátit se 0;
}

V příkladu2.c jsme to viděli, když používáme % c specifikátor, scanf () funkce má pouze jeden znak, i když jsme zadali více než jeden znak.

Příklad 3: Zadávání jednoho znaku (vícekrát)

//Příklad3.c
#zahrnout

inthlavní(){

charC;
printf ('Zadejte 1. znak:');
scanf ('% c', &C);
printf ('Zadali jste: %c n',C);

printf ('Zadejte 2. znak:');
scanf ('% c', &C);
printf ('Zadali jste: %c n',C);

vrátit se 0;
}

Příklad 4 :

//Příklad4.c
#zahrnout

inthlavní(){

charC;
printf ('Zadejte 1. znak:');
scanf ('% c', &C);
printf ('Zadali jste: %c n',C);

printf ('Zadejte 2. znak:');
scanf ('% c', &C);
printf ('Zadali jste: %c n',C);

vrátit se 0;
}

Příklad 5: Vstup řetězce

// Příklad 5.c
#zahrnout

inthlavní(){

charnázev[patnáct];
printf ('Zadejte své jméno: ');
scanf ('%s',název);
printf ('Zadali jste: %s n',název);

vrátit se 0;
}

funkce getc ()

Syntax: int getc (FILE *stream)

getc () funkce se používá ke čtení znaku z ukazatele (proudu) FILE. Ke čtení z klávesnice musíme použít stdin . Tato funkce vrací celočíselnou hodnotu čteného znaku.

Příklad 6:

// Příklad 6.c
#zahrnout

inthlavní(){

charC;
printf ('Zadejte 1. znak:');
zatímco((C= getc (stdin))==' n');
printf ('Zadali jste: %c n',C);

zatímco( getc (stdin)! =' n');

printf ('Zadejte 2. znak:');
zatímco((C= getc (stdin))==' n');
printf ('Zadali jste: %c n',C);

vrátit se 0;
}

funkce getchar ()

Syntax: int getchar (neplatné)

getchar () funkce je stejná jako getc () . Jediným rozdílem je, že getc () funkce může číst z libovolného vstupního proudu, zatímco getchar () funkce čte pouze ze standardního vstupu.

Příklad 7:

// Příklad 7.c
#zahrnout

inthlavní(){

charC;
printf ('Zadejte 1. znak:');
zatímco((C= dostat ())==' n');
printf ('Zadali jste: %c n',C);

zatímco( dostat ()! =' n');

printf ('Zadejte 2. znak:');
zatímco((C= dostat ())==' n');
printf ('Zadali jste: %c n',C);

vrátit se 0;
}

Závěr

V tomto článku jsme viděli, jak se vstupní funkce používají v jazyce C. Všechny tyto funkce jsou převzaty ze vstupního bufferu a když tyto funkce použijeme vícekrát, musíme buffer vymazat. V opačném případě nebudou funkce čekat na vstup uživatele a převezmou vstup z vyrovnávací paměti.