Linguaggio C: Stringhe di caratteri e File
|
|
|
- Raimondo Salvi
- 9 anni fa
- Просмотров:
Транскрипт
1 Linguaggio C: Stringhe di caratteri e File
2 ESEMPIO: Lettura da tastiera e stampa a video di una sequenza di caratteri #include <stdio.h< stdio.h> main() int c; printf("inserisci dei caratteri"); printf("( ("(CTRL+D per finire)"); while ((c=getchar getchar())!= EOF) putchar(c);
3 ESEMPIO: Visualizzazione dei caratteri ASCII #include <stdio.h< stdio.h> main() char c=' '; while (c <= '') putchar(c); c++;
4 I/O DI CARATTERI: getchar e putchar Le funzioni getchar e putchar,, definite nell'header file stdio.h, servono per l'input e l'output di caratteri int getchar() restituisce un intero corrispondente al codice del tasto della tastiera premuto (o il valore predefinito EOF in caso di segnalazione di fine file) int putchar(char c) invia al video il carattere c e restituisce il corrispondente codice del tasto della tastiera se l'operazione di output ha avuto successo Da tastiera il valore predefinito EOF può essere inserito con CTRL+D o con CTRL+Z,, a seconda del calcolatore
5 ESEMPIO: Lettura da tastiera e visualizzazione del testo trasformato in maiuscolo #include <stdio.h< stdio.h> #include <ctype.h< ctype.h> main() int ci, co; printf("inserisci dei caratteri"); printf("( ("(CTRL+D per finire)"); while ((ci ci=getchar())!= EOF) if (isalpha(ci) && islower(ci)) co=toupper(ci); else co=ci; putchar(co co);
6 MANIPOLAZIONE DI CARATTERI Funzioni definite nell'header file ctype.h per operare sui caratteri prescindendo dalla loro codifica (fatta salva la consecutività dei caratteri numerici '0', '1', e dei caratteri minuscoli e maiuscoli 'a', 'b',, 'A', 'B', ): isalpha verifica se l'argomento è una lettera dell'alfabeto isdigit " " " è una cifra islower " " " è una lettera minuscola isupper " " " è una lettera maiuscola ispunct " " " è un carattere di punteggiatura isspace " " " è un carattere di separazione tolower restituisce la lettera minuscola equivalente al carattere maiuscolo passato come argomento toupper restituisce la lettera maiuscola equivalente al carattere minuscolo passato come argomento Sono tutte funzioni di tipo intero (simulazione del tipo logico), con argomento di tipo carattere
7 STRINGHE Una variabile di tipo char può contenere un solo carattere; per trattare sequenze di caratteri il linguaggio C introduce le stringhe,, intese come array di caratteri in cui è specificato il carattere di terminazione della stringa ('\0'). DICHIARAZIONE E ASSEGNAZIONE DI UNA STRINGA: char giorno[7]="sabato"; 's' 'a' 'b' 'a' 't' 'o' '\0' N.B.: char c='a'; indica un unico carattere memorizzato in un'unica locazione di memoria char c[2]="a"; indica una stringa,, memorizzata in due locazioni di memoria consecutive contenenti i caratteri 'a' e '\0'
8 LETTURA DI UNA STRINGA: char giorno[100]; scanf(" ("%s",giorno); N.B. giorno è un array,, per cui il secondo argomento passato alla scanf (giorno) è l'indirizzo del primo elemento dell'array giorno (&giorno[0]) In giorno verrà memorizzata una sequenza di caratteri immessi in input racchiusa fra caratteri di separazione (spazio, tabulazione, andata a capo, ) una stringa non può contenere degli spazi l'array che deve contenere la stringa deve essere opportunamente dimensionato
9 ESEMPIO: Calcolo della lunghezza di una stringa (n. di caratteri escluso '\0')' #include <stdio.h< stdio.h> #define MAXL 100 int lungh_string(char stringa[]); main() char str1[maxl]; printf("inserisci una stringa\n"); scanf("%s",str1); printf("lunghezza stringa = %d", lungh_string(str1)); int lungh_string(char stringa[]) int indice=0; while (stringa[indice]) indice++; return(indice);
10 ESEMPIO: : Copia di una stringa in un'altra #include <stdio.h< stdio.h> #define MAXL 100 int lungh_string(char s[]); void copy_string(char s1[], char s2[]); main() char str1[maxl], str2[maxl]; printf("inserisci una stringa"); scanf("%s",str1); copy_string(str1,str2); printf("stringa copiata:%s\n",str2); void copy_string(char s1[], char s2[]) int i; for (i=0; i<=lungh_string(s1); i++) s2[i]=s1[i];
11 ESEMPIO: : Ricerca di una stringa in un'altra #include <stdio.h< stdio.h> #define MAXL 100 int lungh_string(char s[]); int search_str(char s1[], char s2[]) int trovato=0, l1, l2, i, j; l1=lungh_string(s1); l2=lungh_string(s2); if (l1>=l2) i=0; while((!trovato) && (i<=l1-l2)) l2)) trovato=1; for (j=0;j<l2;j++) if (s2[j]!= s1[i+j]) trovato=0; i++; return(trovato);
12 ESEMPIO: : Ricerca di una stringa in un'altra (cont.) main() char str1[maxl], str2[maxl]; int trovato; printf("inserisci una stringa"); scanf("%s",str1); printf("inserisci una chiave"); scanf("%s",str2); trovato=search_str(str1,str2); if (trovato) printf("chiave trovata\n"); else printf("chiave non trovata\n");
13 MANIPOLAZIONE DI STRINGHE Il linguaggio C standard prevede varie funzioni per la manipolazione di stringhe, contenute nell'header file string.h strlen(s) restituisce la lunghezza della stringa s strcpy(s1,s2) copia s2 in s1 strcmp(s1,s2) confronta le due stringhe e restituisce un intero negativo se s1 < s2, zero se s1 = s2, un intero positivo se s1 > s2 strcat(s1,s2) concatena s1 con s2, copiando i caratteri che costituiscono s2 in coda a quelli di s1, e restituendo un puntatore a s1 strstr(s1,s2) ricerca la stringa s2 nella stringa s1, restituendo un puntatore al punto di s1 dove inizia s2 (oppure NULL se s2 non è presente) atof(s) converte la stringa s in un numero reale a doppia precisione, restituendo il risultato in un double atoi(s) converte la stringa s in un numero intero
14 #include <stdio.h< stdio.h> main() FILE *fp* fp; int i; ESEMPIO: Stampa di dati su un file testo if ((fp fp=fopen("file.dat","w")) ")) == NULL) printf("errore apertura file.dat.dat\n"); else for (i=1; i<=10; i++) fprintf(fp,, "%d\n",i n",i); fclose(fp);
15 ESEMPIO: Lettura di dati da un file testo #include <stdio.h< stdio.h> main() FILE *fp; int i, stato; if ((fp fp=fopen("file.dat","r")) ")) == NULL) printf("errore apertura file.dat.dat\n"); else for (stato( stato=fscanf(fp,, "%d", &i); stato!= EOF; stato=fscanf(fp fp,, "%d" %d", &i)) printf("%d ("%d\n",i); fclose(fp fp);
16 I FILE Un file testo è una sequenza di componenti tutti dello stesso tipo caratterizzata dall'accesso sequenziale. Per operare su un file testo, questo deve essere "aperto": fp=fopen =fopen("nome_file","tipo_apertura"); con: fp puntatore a file: FILE *fp; "nome_file" stringa contenente il nome del file, incluso il percorso nel file system "tipo_apertura" stringa che specifica il tipo di operazioni da compiere sul file ("r"=solo lettura; "w"=scrittura" =scrittura; ; "a"=appendi" =appendi; "r+ r+"=lettura e scrittura ) Una volta terminato di operare su un file, questo deve essere "chiuso": fclose(puntatore_a_file);
17 Il C standard prevede alcuni file testo standard: stdin = standard input (tastiera) stdout = standard output (video) stderr = standard error (video) Questi sono sempre predisposti, per cui non devono essere nén aperti nén chiusi Per la lettura e la scrittura su file testo sono disponibili funzioni analoghe a quelle per i file testo standard: fscanf(puntatore_a_file," (puntatore_a_file,"%d",&intero); fprintf(puntatore_a_file," (puntatore_a_file,"%d",intero); carattere=getc getc(puntatore_a_file); putc(carattere (carattere, puntatore_a_file);
18 I file considerati sinora sono detti file testo: le informazioni contenute nel file, rappresentate in binario nel calcolatore, vengono convertite nel formato del loro tipo di dato e così memorizzate Nei file binari,, invece, le informazioni contenute nel file sono memorizzate direttamente in binario. File testo vs. file binari: i file testo possono essere facilmente manipolati mediante un qualsiasi text editor i file testo sono trasportabili i file binari occupano meno spazio i file binari sono più veloci da leggere e a scrivere
19 ESEMPIO: Stampa di dati su un file binario #include <stdio.h< stdio.h> main() FILE *fp* fp; int i; if ((fp fp=fopen("file.dat","wb")) ")) == NULL) printf("errore apertura file.dat.dat\n"); else for (i=1; i<=10; i++) fwrite(&i, sizeof(int), 1, fp); fclose(fp fp);
20 ESEMPIO: Lettura di dati da un file binario #include <stdio.h< stdio.h> main() FILE *fp; int i, stato; if ((fp fp=fopen("file.dat","rb")) ")) == NULL) printf("errore apertura file.dat.dat\n"); else for (stato( stato=fread(&i, sizeof(int), 1, fp); stato!= EOF; stato=fread(&i &i, sizeof(int int), 1, fp)) printf("%d ("%d\n",i); fclose(fp fp);
21 Per operare su un file binario, questo deve essere "aperto" in modo m binario: fp=fopen(" ("nome_file","tipo_apertura"); con "tipo_apertura": "rb"" = solo lettura "wb"" = scrittura "ab"" = appendi Per la lettura e la scrittura su file binario sono disponibili le funzioni: fread(ind_dati ind_dati, sizeof(dati), num_dati,, puntatore_a_file); fwrite(ind_dati ind_dati, sizeof(dati), num_dati, puntatore_a_file);
22 F I N E
LIBRERIE STANDARD in C. LIBRERIE STANDARD in C
LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle
Caratteri e stringhe
Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un
Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0
STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1
STRINGHE: ARRAY DI CARATTERI! a p e \0
STRINGHE: ARRAY DI CARATTERI! Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più
Gestione dei File. dischi nastri cd
Gestione dei File Per mantenere disponibili i dati tra le diverse esecuzioni di un programma, questi si devono archiviare in file su memoria di massa (dati persistenti): dischi nastri cd Un file è un astrazione
Linguaggio C: i file
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: i file La presente dispensa e da utilizzarsi ai soli fini didattici previa
Gestione di files Motivazioni
Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)
Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002
I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi [email protected] Sommario Generalità sui file in C I file ad accesso sequenziale I file di testo Riferimenti
puntatori Lab. Calc. AA 2007/08 1
puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene
Struttura dei programmi C
Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte
Fondamenti di Informatica T. Linguaggio C: File
Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.
Lettura da tastiera e scrittura su monitor
Lettura da tastiera e scrittura su monitor Per poter leggere UN SINGOLO CARATTERE dalla tastiera e visualizzare UN SINGOLO CARATTERE sul monitor si possono utilizzare le funzioni: int getchar (void) (per
Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
Esercitazione 6. Array
Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione
Linguaggio C La libreria standard
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C La libreria standard 2001 Pier Luca Montessoro - Davide Pierattoni
stringhe array monodimensionali char. libreria < string.h>
Le stringhe Le stringhe sono array monodimensionali il cui tipo base è char. Il nucleo del linguaggio non prevede particolari istruzioni per il trattamento delle stringhe che potrebbero essere gestite
Esercitazione 3. Oggi sono stati effettuati semplici esercizi in C utilizzando le seguenti istruzioni: if...else, while, printf, scanf
Riassunto Esercitazione 3 Oggi sono stati effettuati semplici esercizi in C utilizzando le seguenti istruzioni: if...else, while, printf, scanf Sono state introdotte anche le seguenti relazioni: uguaglianza:
---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero
---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero delle variabili a cui possono essere assegnati gli indirizzi
Unità Didattica 5 Linguaggio C. Stringhe. Accesso a file ASCII. Strutture.
Unità Didattica 5 Linguaggio C Stringhe. Accesso a file ASCII. Strutture. 1 Stringhe Una stringa è una sequenza di caratteri (es: ciao, sd!n29dnqa ); In C non esiste una variabile di tipo stringa; Una
Scrittura formattata - printf
Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri
Caratteri e stringhe. Funzioni di libreria
Caratteri e stringhe Introduzione Lunghezza di stringhe Classificazione di caratteri Trasformazione di caratteri Copia e concatenazione Confronto di stringhe Ricerca in stringhe Conversione numero-stringa
Input/Output di numeri
Input/Output di numeri I/O di numeri Per utilizzare le funzioni di I/O occorre include il file di intestazione (o file header) stdio.h utilizzando all inizio del sorgente la direttiva #include
1 (6) 2 (7) 3 (7) 4 (7) 5 (6)
CORSO DI LAUREA IN INGEGNERIA ELETTRICA, CHIMICA e MATERIALI Informatica B anno accademico 010-011 Prof. Danilo ARDAGNA Seconda Prova in Itinere 7.06.011 Durata 1h 30 Valutazioni 1 (6) (7) 3 (7) 4 (7)
Programmazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 4 - Puntatori, vettori e stringhe Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti
Esercizio 1: funzione con valore di ritorno di tipo puntatore
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio
Le funzioni, e le istruzioni di input/output
Linguaggio C Le funzioni, e le istruzioni di input/output 1 Funzioni! Sono sottoprogrammi per svolgere un particolare compito! Sequenze di istruzioni (raggruppate tramite le parentesi graffe) alle quali
Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi
Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi [email protected] Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)
Variabili e Istruzioni
Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome
Introduzione al Linguaggio C
Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C
Caratteri e stringhe
Caratteri e stringhe Vettori di caratteri Il tipo stringa Terminatore nullo Input/output di stringhe 2 Vettori di caratteri Stringhe in C Nel linguaggio C non è supportato esplicitamente alcun tipo di
Input/output in C e in C++
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Input/output in C e in C++ 2001 Pier Luca Montessoro - Davide Pierattoni
Corso di Informatica 1 Esercitazione n. 4
Corso di Informatica 1 Esercitazione n. 4 Marco Liverani Esercizio n. 1 Letti in input due numeri interi n > 0 e k > 1 costruire un array A di n numeri interi casuali minori di 100 che non siano multipli
4 GLI ARRAY E LE STRINGHE
13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si
Caratteri e stringhe. Vettori di caratteri. Il tipo stringa Terminatore nullo Input/output di stringhe Politecnico di Torino 1
Caratteri e stringhe Il tipo stringa Terminatore nullo Input/output di stringhe 2 2006 Politecnico di Torino 1 Stringhe in C Nel linguaggio C non è supportato esplicitamente alcun tipo di dato stringa
IL PRIMO PROGRAMMA IN C
IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE
I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore
I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p
Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }
ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il
Informatica 1. Prova di recupero 21 Settembre 2001
Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo
Soluzione/* PROGRAMMAZIONE IN C */ #include <stdio.h> #include <stdlib.h>
Ricerca di un elemento in vettore Scrivere un programma in linguaggio C che riceve in ingresso una sequenza di N numeri interi. I numeri sono memorizzati in un vettore. Il valore N è inserito dall utente,
Gestione dei File in C
Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania [email protected] http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte
Esercitazione 12. Esercizi di Ricapitolazione
Esercitazione 12 Esercizi di Ricapitolazione Esercizio Scrivere un programma che, dato un numero intero positivo, stampa la sua rappresentazione binaria. ALGORITMO Scriviamo una procedura stampa_bin che,
Stringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
Il linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
Esercizio 1 Liste: calcolo perimetro di un poligono
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 12 Esercitazione: 28 gennaio 2005 Esercizi su liste, ricorsione, file. Scaletta Esercizio 1 Liste: calcolo perimetro di
Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.
Esercizio 1 Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. #include Esercizio 1 - Soluzione int main() int num1, num2, num3, somma; float
Esercizio 1: Puntatori impiegati che sono manager
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 10 Esercitazione: 25 gennaio 2006 Esercizi di riepilogo Problema: Esercizio 1: Puntatori impiegati che sono manager Si
ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010
Tipi di dati scalari (casting e puntatori) Alessandra Giordani [email protected] Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi
