.:PARTE 2 - FILE DI TESTO E STRINGHE:.
Eccoci di nuovo quì a parlare ancora di programmazione C. In questo seconda parte tratteremo delle stringhe e dei file di
testo in C. Come al solito, per capire questo tutorial, si presuppone che voi abbiate già dimistichezza con qualche
linguaggio e che abbiate assimilato il tutorial precedente. Detto questo, passiamo alla pratica...
LE STRINGHE
-----------
Prima di occuparci subito di stringhe diciamo che una stringa è un'insieme (vettore) di caratteri. Capire subito cosa
sia un vettore è basilare, visto che dopo avremmo a che fare anche con vettori di numeri e non di caratteri.
Immaginate che un carattere sia in memoria una casella con uno spazio, mentre una stringa è un'insieme di caratteri
disposti in maniera lineare... Vi faccio un'esempio skematico :
CARATTERE [ ]
STRINGA [ ][ ][ ]...[ ]
Forse ora la cosa dovrebbe essere più chiara :) Comunque vediamo come si dichiarano questi due tipi di dato in c:
Carattere -> char carattere;
stringa-> char stringa[50];
Il nome della variabile, logicamente, lo potete mettere come + vi aggrada. Ora, dopo il discorso che vi ho fatto, e dopo
aver visto quella dichiarazione, per voi, quella stringa dichiarata, di quanti caratteri (celle) è formata??
Chi ha detto 50? Bravi! :) Ora non ci rimane che vedere come gestire queste stringe in I/O. A questo proposito, vi scrivo
un bel programmino.
#include <stdio.h>
void main(void)
{
char stringa[50];
clrscr();
printf("Inserisci il tuo nome (la stringa): ");
scanf("%s",&stringa);
printf("nIl tuo nome è : %s",stringa);
printf("nLa 1° e la 2° lettera del tuo nome sono rispettivamente: %c,%c",stringa[0],stringa[1]);
printf("Bye!");
}
Credo che il programma risulti abbastanza chiaro, tenendo conto che il 1° carattere della stringa parte dalla posizione 0,
vi dovrebbe esser chiara anche la penultima printf.
Con questo abbiamo visto in maniera abbastanza approssimativa l'utilizzo delle stringhe. Dico approssimativa perchè il
discorso sarebbe molto piu' ampio, anche perchè il C mette a disposizione un'intera libreria (string.h) per gestire
le stringhe. Comunque, per ora, l'importante è sapere queste poche nozioni.
FILE DI TESTO
-------------
Bene, è il momento di iniziare a vedere come funzionano in C i file di testo. Il loro utilizzo è abbastanza comune e molto
comodo, e il C gestisce tutto in maniera abbastanza semplice, trattando il file in maniera molto simile all'I/O di schermo
ad esempio.
Dichiarare un puntatore ad un file è semplice quanto dichiarare un qualsiasi tipo di variabile:
FILE *fl;
Logicamente, anche quì, il nome dato (fl) può essere uno qualsiasi. Ricordiamoci sempre l' * davanti al nome del
puntatore. Una volta dichiarato il puntatore, dobbiamo decidere a quale file questo puntatore deve accedere (ovvero
dobbiamo decidere quale file aprire). Per farlo dobbiamo anche decidere il "modo" in cui aprirlo, ovvero se per lettura
o per scrittura I/O.
Per aprire un file di testo in scrittura si usa:
fl=fopen("MIOFILE.TXT","wt");
Per aprire, invece, un file di testo il lettur si usa:
fl=fopen("MIOFILE.TXT","rt");
rispettivamente, gli argomenti di funzione, sono: nome del file (MIOFILE.TXT) e metodo di apertura (wt o rt).
wt significa che il file viene aperto in scrittura (w -> write) e che è un file di testo (t)
rt significa che il file viene aperto in lettura (r -> read) e che è un file di testo (t)
Quando si apre un file in scrittura potrebbe essere necessario, se non esiste, crearlo. Per fare ciò basta far seguire
a w il carattere + in modo da avere:
fl=fopen("MIOFILE.TXT","w+t");
Chiudere un file, invece, è cosa semplicissima:
fclose(fl);
Per scrivere e leggere in/da un file di testo si usano le funzioni fprintf e fscanf. Sensa starvi a spiegare come funzionano
sin da subito vediamo il loro utilizzo in in programma.
Il Programma che segue scriverà un numero ed una stringa immessa dall'utente in un file, dopodichè lo andrà a rileggere
e lo stamperò su skermo...
#include <stdio.h>
void main(void)
{
FILE *fl;
int numero;
char stringa[50];
clrscr();
printf("Inserisci un numero: ");
scanf("%d",&numero);
printf(nInserisci una stringa: ");
scanf("%s",&stringa);
// SI SCRIVE SUL FILE
fl=fopen("MIOFILE.TXT","w+t");
fprintf(fl,"%d",numero);
fprintf(fl,"n%s",stringa);
fclose(fl);
// -------------------
// SI LEGGE IL FILE
fl=fopen("MIOFILE.TXT","rt");
fscanf(fl,"%d",&numero);
fscanf(fl,"n%s",&stringa);
fclose(fl);
// -------------------
printf("n%dn%s",numero,stringa);
}
Bene facciamo il punto -> . (bwhauahau) Ok, tornando seri (mi prendo poke licenze ironiche, e pure brutte come vedete :),
potete notare di come la fscanf e la fprintf siano molto vicini, oltre che per nome anche come sintassi, alla scanf e alla
printf. In questo caso, però, specifichiamo DOVE leggere/scrivere, con il primo argomento (ovvero fl, il file).
Per il resto funzionano in maniera del tutto simile, con le stesse regole e gli stessi codici di escape (se non vi ricordate
cosa sono andate a rileggervi il 1° tutorial :)
Conclusioni
-----------
Anke per questa volta abbiamo finito. La prossima volta credo che vi parlerò di vettori e matrici, e magari vi spiego
anche qualche metodo di ordinamento. Bai! |