/C/scanf, gets, gechar között mi a kulombseg, gets ben csak char valtozot olvashatunk be?
scanf számot,"stringet" is beolvas. scanf withespace (tab, enter, szóköz) után nem olvas, megáll.
gets -el szöveget olvasol be, itt újsorig, szóval space, tab utánit is beolvassa.
getchar pedig egy darab karaktert olvas be emlékeim szerint.
A getchar()-ral egyetlen karaktert lehet beolvasni. Igy:
char ch;
ch = getchar();
printf("A beolvasott karakter: %c", ch);
A gets()-sel egy tetszoleges string-et. Igy:
char buffer[256];
gets(buffer);
printf("A beirt szoveg: %s\n", buffer);
A gets() ujsor karakterig ('\n') vagy fajl-vege jelig (EOF) olvas, ami a gyakorlatban legtobbszor azt jelenti, hogy az Enter leuteseig. A megadott tombnek (buffer) elegendoen nagynak kell lennie, hogy a beirt string-et (+ a vegere automatikusan hozzafuzott null-karaktert) tartalmazni tudja.
A scanf() tudja a legtobbet, ezzel szinte mindent be lehet olvasni. Pl. egy egesz szamot igy:
int n;
scanf("%d", &n);
Egy string-et is, igy:
char buffer[256];
scanf("%s", buffer);
Itt a scanf() a string-et az elso whitespace karakterig olvassa be - ebben tehat elter a gets()-tol. A tarolo tombnek (buffer) persze itt is eleg nagynak kell lennie.
De lehet egesz osszetett beolvasasokat is csinalni scanf()-fel:
double x;
int n;
printf("Irj be egy lebegopontos es egy egesz szamot vesszo+szokozzel elvalasztva: ");
scanf("%lf, %d", &x, &n);
printf("x: %f\n", x);
printf("n: %d\n", n);
Itt egy scanf() hivassal ket szamot is beolvasunk, a bemenetnek pedig peldaul igy kell kineznie: "3.14, 49"
Az egyeb scanf() valtozatok (sscanf(), fscanf(), stb.) hasznalata teljesen hasonlo, leginkabb annyiban ternek el, hogy meg lehet adni, honnan olvassanak (pl. fajlbol, stb.)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!