Sab. Ott 19th, 2019

Input & Output di stringhe in C

Salve, Oggi parleremo di come leggere e stampare le stringhe in C. Ci sono vari metodi.

Abbiamo il consueto scanf(), gets() e fgets().


scanf()

Sappiamo come si usa, per leggere un valore ha bisogno di un preciso format specifier che in questo caso è %s.

char stringa[10];

scanf(“%s”, stringa);

Come vedete per leggere la stringa basta solo mettere il nome, non serve ‘&’ poiché essendo un vettore già funziona come puntatore.


Che differenza c’è fra scanf e gets?

Utilizzando scanf() puoi leggere un input fino ad uno spazio, invece gets legge finché invio non sarà premuto. In pratica scanf legge parole e gets anche frasi.

gets è una funzione a parametri quindi semplicemente per leggere una stringa basta fare

gets(nomestringa);


fgets()

fgets() invece è una scelta più ‘sicura’. Utilizzare fgets impedisce degli errori come un buffer overflow (Quando abbiamo una stringa più lunga di una data lunghezza).

Come si utilizza quindi l’fgets? Questa funzione accetta 3 parametri:

fgets(stringa, n, inputtype);

Nel parametro stringa ovviamente immetteremo il nome della variabile che contiene la stringa, in n la lunghezza che favoriamo (non più grande della lunghezza di dichiarazione) e infine abbiamo inputtype, solitamente si usa ‘stdin‘ per specificare un input da tastiera.

Vediamo un esempio:

char str[10];

fgets(str, 10, stdin);

C’è però un particolare, che il parametro n di fgets leggerà sempre n-1 poiché c’è sempre bisogno di uno spazio libero per ‘\0’


Passiamo adesso ai tipi di output. Abbiamo printf(), puts() e fputs().

Printf() utilizza come lo scanf() il format %s

printf(“%s”, stringa);

puts come gets ha bisogno di un parametro, cioè della stringa da stampare sulla console ( puts(stringa) )

fputs() invece accetta due parametri, uno è la stringa da stampare, il secondo parametro è un puntatore che stabilisce dove stampare la stringa, ovviamente la vogliamo stampare in console quindi i nostri parametri saranno:

fputs(stringa, stdout) (stdout = standard output [stampa la stringa in console]).


Per questa guida è tutto, spero sia tutto chiaro. Se avete altre domande contattatemi su Lyone_official. Invece se avete altre guide da consigliare scrivetele al nostro Profilo Ufficiale, Draky00 o al nostro Bot Ufficiale per Limitati.

Risorse

Iscriviti tramite email

Inserisci il tuo indirizzo e-mail per iscriverti a HackTricks, e ricevere via e-mail le notifiche di nuovi post.

Unisciti a 7 altri iscritti