Presentation is loading. Please wait.

Presentation is loading. Please wait.

Laboratorio di Linguaggi lezione VII Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.

Similar presentations


Presentation on theme: "Laboratorio di Linguaggi lezione VII Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea."— Presentation transcript:

1 Laboratorio di Linguaggi lezione VII Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica Anno Accademico 2004/05

2 M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 4 / 0 5 U n i v e r s i t à d e l l I n s u b r i a Input Output printf sprintf fprintf scanf sscanf fscanf da/a terminale da/a stringhe da/a files inputoutput

3 M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 4 / 0 5 U n i v e r s i t à d e l l I n s u b r i a Esempio con sprintf concatenazione di stringhe char stringa1[] = "cacio"; char stringa2[] = "cavallo"; char *concaten; sprintf(concaten,"%s%s",stringa1, stringa2); NON vi eravate accorti dell'errore?!

4 M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 4 / 0 5 U n i v e r s i t à d e l l I n s u b r i a Input Output printf sprintf fprintf scanf sscanf fscanf da/a terminale da/a stringhe da/a files inputoutput

5 M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 4 / 0 5 U n i v e r s i t à d e l l I n s u b r i a Uso tipico di sscanf : Lettura degli argomenti da riga di comando di un programma. int main(int argc, char *argv[]) argv[0] : nome del programma argv[1] : primo argomento... argv[argc-1] : ultimo argomento numero di argomenti + 1 C:> pippo.exe –a –o:zap argv[0] argv[1] argv[2]

6 M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 4 / 0 5 U n i v e r s i t à d e l l I n s u b r i a Uso tipico di sscanf (compito per casa) : /* mostra le isturzioni di uso da riga di comando */ void show_usage(){... } int main(int argc, char *argv[]) { int x; if (argc<2) { /* nessun argomento: mostra l'aiuto e esci */ show_usage(); return 0; } if (sprintf("%d", argv[1], &x) != 1) { /* il primo argomento non e' un numero: mostra l'aiuto e esci */ show_usage(); return 0; } /* mostra i byte che compongono il numero... in base 16. Due cifre a byte, separate da uno spazio es: 00 00 00 01 */... return 1; }

7 M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 4 / 0 5 U n i v e r s i t à d e l l I n s u b r i a Input Output printf sprintf fprintf scanf sscanf fscanf da/a terminale da/a stringhe da/a files inputoutput

8 M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 4 / 0 5 U n i v e r s i t à d e l l I n s u b r i a Gestione files FILE* file_di_output= fopen ("ciao.txt", "wt");... /* uso il file in scrittura */ fclose(file_di_output); FILE* file_di_output= fopen ("ciao.txt", "rt");... /* uso il file in lettura */ fclose(file_di_output);

9 M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 4 / 0 5 U n i v e r s i t à d e l l I n s u b r i a Files in binario o in modo testo? Binario: –veloce –platform dependent incubi di compatibilità se si leggono files scritti con una architettura differente –di solito più coinciso Modo testo: –più lento –platform independent –file comprensibili (leggibili in "umano" come testo)

10 M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 4 / 0 5 U n i v e r s i t à d e l l I n s u b r i a Gestione files Scrittura e lettura non formattate fwrite fread o ( void* p, int size_elem, int n_elem, FILE* f) scrivono/leggono (in binario) sul file restituiscono il numero di elementi scritti/letti sono operatori efficienti

11 M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 4 / 0 5 U n i v e r s i t à d e l l I n s u b r i a Gestione files tutte le funzioni per leggere e scrivere su files... leggono e scrivono dalla posizione corrente –che viene aggiornata come effetto collaterale fwrite fread fprintf fscanf

12 M a r c o T a r i n i L a b o r a t o r i o d i L i n g u a g g i 2 0 0 4 / 0 5 U n i v e r s i t à d e l l I n s u b r i a Gestione files la posizione corrente: –e' un long int –puo' essere letta –puo' essere cambiata: –o anche, riportata all'inizio del file: long int ftell(FILE *fp); int fseek(FILE *fp, long int offset, SEEK_SET ); int fseek(FILE *fp, long int offset, SEEK_CUR ); int fseek(FILE *fp, long int offset, SEEK_END ); int rewind (FILE *fp );


Download ppt "Laboratorio di Linguaggi lezione VII Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea."

Similar presentations


Ads by Google