Download presentation
Presentation is loading. Please wait.
Published byAlex McElroy Modified over 11 years ago
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 );
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.