Llegir dades per teclat en C utilitzant scanf

Aquest post és molt bàsic però ens ensenya com llegir una variable donada per un usuari en C utilitzant la funció scanf. Amb aquesta funció podem llegir qualsevol tipus de dada, sempre que especifiquem el seu tipus correctament.

Es diu scanf perquè escaneja segons un format. Com a primer argument rep el format (una cadena) i com a segon argument l’adreça de memòria on posarà el valor llegit.

Aquesta funció per llegir dades per teclat en C està a la llibreria stdio.h, el únic que hem de fer és incloure-la amb #include <stdio.h>.

Com llegir variables amb scanf

Per a això primer declarem la variable, i després anomenem a la funció, passant-li la direcció de la variable usant l’operador &. Per cert, quan llegim cadenes això no cal, passem el nom de la variable sense obtenir la seva direcció.

Llegir una variable sencera en C

És així:

See the gist on github.

el printf abans de l’scanf serveix per indicar-li a l’usuari el que ha de fer, perquè scanf pausa el programa fins que llegeix el valor. El format utilitzat és% d.

Obtenir un valor flotant per teclat

El mateix que vam fer per a un sencer, però ara amb un flotant. Queda així:

Veure the gist on github.

El format és% f. Presta atenció quan imprimim el nombre, fem servir% 0.2f perquè imprimeixi únicament 2 decimals després del punt; això és per a no mostrar el nombre en la seva màxima expressió; però si vols pots utilitzar simplement% f.

Llegir cadena amb scanf

Per a llegir una cadena en C és gairebé el mateix, però ara no passem l’adreça de memòria perquè una cadena ja és un apuntador a el primer caràcter que la conforma.

Veure the gist on github.

Nota: si us plau llegeix per què usar fgets en lloc de scanf si vols millorar la seguretat de les teves programes.

Més formats

Pots llegir variables de molts tipus; especificant el format. Dels que recordo, són:

% d per sencers declarats amb int

% s per cadenes declarades amb char* o char cadena

% c per a caràcters declarats amb char

% f per flotants declarats amb float

% l per sencers declarats com long

% pluja per a enters que són unsigned long long (fem servir això quan vam veure com convertir binari a decimal)

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *