Funzioni di libreria. Caratteri e stringhe. Librerie sulle stringhe. Funzioni di libreria. Rappresentazione. Suggerimenti

Documenti analoghi
Caratteri e stringhe

Caratteri e stringhe. Funzioni di libreria

Caratteri e stringhe in C: scheda riassuntiva

Riferimenti al materiale

Caratteri e stringhe. Programmazione in C. Riferimenti al materiale

Dispensa 13 CORSO DI PROGRAMMAZIONE A.A CORSO DI LAUREA IN INGEGNERIA E SCIENZE INFORMATICHE CESENA. Laboratorio

Caratteri e stringhe

Stringhe in C. Emilio Di Giacomo

Operazioni elementari sulle stringhe

Capitolo 8 Caratteri e Stringhe

Settimana n.8. Contenuti. Obiettivi Caratteri Vettori di caratteri Stringhe

Stringhe. Una stringa è una sequenza di caratteri. Esempi: printf( Sum = %d, s); #define ERR_PREFIX ***** Error -

Capitolo 8 - Caratteri e Stringhe

Caratteri e stringhe

Stringhe. Concetti chiave

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0

A. Ferrari. stringhe di caratteri In linguaggio C

Elementi di Programmazione in C++

Lezione XI Le stringhe

Corso sul linguaggio C Modulo Tipi di dato

STRINGHE: ARRAY DI CARATTERI! a p e \0

Linguaggio C: Stringhe Valeria Cardellini

Caratteri e stringhe

string.h strcpy strc strcat strcmp strcmp strchr strstr strstr i t r ; s r \0 int strlen(char* str) char pippo[]={ p, i, p, p, o, \0 \ };

Operazioni sulle stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

RIPRENDIAMO I PUNTATORI

Stringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10

Linguaggio C: Stringhe di caratteri e File

ELEMENTI DI INFORMATICA. Linguaggio C

STRINGHE: ARRAY DI CARATTERI STRINGHE: ARRAY DI CARATTERI. a p e \0

Elementi di Informatica

Le stringhe. Le stringhe sono sequenze di caratteri,

Marta Capiluppi Dipartimento di Informatica Università di Verona

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Introduzione al C. Unità 8 Stringhe

Lezione 8: Stringhe ed array multidimensionali

Introduzione al C. Unità 8 Stringhe. S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi

Stringhe. Prof. Lorenzo Porcelli

Stringhe. Unità 8. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

s r t i r n i g n. g h s r t c r p c y s r t c r a c t s r t c r m c p s r t c r h c r s r t s r t s r

Stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

char* titolo= Libreria sulle stringhe Esempi: (strcpy) (strstr)... Laboratorio di Informatica L-A 1

Introduzione al C. Ancora puntatori, allocazione dinamica, e tipi derivati

char* titolo= { l, e,, s, t, r, i, n, g, h, e, \0 };

Corso di Fondamenti di Informatica Tipi strutturati: Stringhe

Le stringhe. Le stringhe sono sequenze di caratteri,

Lezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe

Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. Esempio:

Stringhe in C. Nicu Sebe. Informatica Nicu Sebe 1 / 14

Esercizi per la preparazione. Alessandra Giordani Lunedì 13 maggio 2013

Puntatori e array. Violetta Lonati

Linguaggio C - Stringhe

Esercizi proposti. Caratteri e stringhe. Esercizio Parola palindroma. Esercizi proposti. Palindromia. Analisi. o t t o. m a d a m

Aritmetica dei. Alessandra Giordani Mercoledì 9 maggio

I puntatori e l allocazione dinamica di memoria. Esercizi risolti

Caratteri e stringhe. Esercizi proposti. Esercizio Parola palindroma Esercizio Iniziali maiuscole Esercizio Alfabeto farfallino

Esercitazione di Reti degli elaboratori

C: panoramica. Violetta Lonati

Esercitazioni di Programmazione II. Chiara Petrioli

Introduzione al C. Unità 8 Stringhe. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

Lezione 6: Funzioni di I/O avanzate

Settimana n.9. Obiettivi Stringhe Matrici Vettori di Stringhe

Input robusto. I/O Avanzato e File. Lettura da file. Input robusto. Esempio. Errori di formato

1 MANIPOLAZIONE DI STRINGHE ZERO-TERMINATE

Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Stringhe: vettori di caratteri con terminatore

Introduzione al linguaggio C Dati aggregati

Input robusto. Problemi nella lettura da file Soluzione basata su fgetc Funzione sscanf Soluzione basata su fgets

Parametri by reference. Funzioni. Passaggio dei parametri. Parametri by reference. Soluzione. Problemi

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Le stringhe. Le stringhe

Progetto di FILTRI. FILTRO SIPC (SOLO_I_PRIMI_CARATTERI) #include <stdio.h> #include <string.h>



Linguaggio C. Dr. Damiano Macedonio Dipartimento di Informatica Università di Verona

Esercizi. Stringhe. Stringhe Ricerca binaria

I/O Avanzato in C: scheda riassuntiva

Il linguaggio C Gestione della memoria

Uso avanzato dei puntatori Allocazione dinamica della memoria

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h

Marta Capiluppi Dipartimento di Informatica Università di Verona

Lezione 7: Funzioni e gestione dei File

Librerie C. Corso di Linguaggi e Traduttori 1 AA

Introduzione al linguaggio C Puntatori

Le stringhe. Un vettore di caratteri non è necessariamente una stringa perché non sempre termina con \0.

Confrontare valori 1

Elementi di Informatica A. A. 2016/2017

CARATTERI E STRINGHE Caratteri e stringhe Funzioni della libreria standard I/O Funzioni della libreria di gestione delle stringhe

Stringhe e tipi di dati strutturati

Caratteri e stringhe


Da problema a programma: introduzione al problemsolving

Gestione di stringhe. Le stringhe in C/C++

Vettori di stringhe. Matrici Vettori di stringhe. Matrici di caratteri. Vettori di stringhe. char tris[3][3] ; Esercizio Verifica Sudoku.

Transcript:

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 2 Librerie sulle stringhe La libreria standard C dispone di molte funzioni predisposte per lavorare su caratteri e stringhe Tali funzioni si trovano prevalentemente in due librerie: <ctype.h> funzioni operanti su caratteri <string.h> funzioni operanti su stringhe Tutte le funzioni di libreria accettano e generano stringhe correttamente terminate 4 Suggerimenti Quando possibile, utilizzare sempre le funzioni di libreria Sono più veloci Sono maggiormente collaudate In ogni caso, ricordare che è sempre possibile effettuare le operazioni direttamente: Sui caratteri, ricorrendo alla codifica ASCII Sulle stringhe, ricorrendo alla rappresentazione come vettori di caratteri Rappresentazione strlen int : la lunghezza della stringa Calcola la lunghezza della stringa s lun = strlen(s) ; 5 6

Convenzioni Assumiamo che nel seguito di questa lezione siano valide le seguenti definizioni const int MAX = 20 ; char s[max] ; char s1[max] ; char s2[max] ; char r[max] ; int lun ; int n ; char ch ; float x ; 7 Lunghezza di stringhe strlen <string.h> Determina la lunghezza di una stringa data strlen strlen int : la lunghezza della stringa Calcola la lunghezza della stringa s lun = strlen(s) ; 9 10 Classificazione di caratteri <ctype.h> Analizzano un singolo carattere, identificandone la tipologia Lettera Maiuscola Minuscola Cifra Punteggiatura isalpha isupper islower isdigit isalnum isxdigit ispunct isgraph isprint isspace iscntrl 12

isalpha isupper isalpha isupper lettera maiuscola o minuscola (A...Z, a...z), falso altrimenti lettera maiuscola (A...Z), falso altrimenti if(isalpha(ch)) if(isupper(ch)) 13 14 islower isdigit islower isdigit lettera minuscola (a...z), falso altrimenti cifra numerica (0...9), falso altrimenti if(islower(ch)) if(isdigit(ch)) 15 16 isalnum isxdigit isalnum isxdigit lettera oppure una cifra numerica, falso altrimenti. Equivalente a isalpha(ch) isdigit(ch) una cifra numerica oppure una lettera valida in base 16 (a...f, A...F), falso altrimenti. if(isxdigit(ch)) if(isalnum(ch)) 17 18

ispunct isgraph ispunct Ritorna vero se il carattere ch è un simbolo di punteggiatura (!"#$%&'()*+,-./:;<=>?@ [\]^_`{ }~), falso altrimenti. if(ispunct(ch)) isgraph Ritorna vero se il carattere ch è un qualsiasi simbolo visibile (lettera, cifra, punteggiatura), falso altrimenti. if(isgraph(ch)) 19 20 isprint isspace isprint Ritorna vero se il carattere ch è un qualsiasi simbolo visibile oppure lo spazio, falso altrimenti. isspace Ritorna vero se il carattere ch è invisibile (spazio, tab, a capo), falso altrimenti. if(isprint(ch)) if(isspace(ch)) 21 22 iscntrl Vista d insieme iscntrl Ritorna vero se ch è un carattere di controllo (ASCII 0...31, 127), falso altrimenti. A...F a...f 0...9 isdigit isxdigit G...Z isupper g...z islower isalpha isalnum!"#$%&'( )*+,-./: ;<=>?@[\ ]^_`{ }~ ispunct isgraph if(iscntrl(ch)) 23 Caratteri di controllo Tab Newline Spazio iscntrl isspace isprint 24

Trasformazione di caratteri <ctype.h> Convertono tra lettere maiuscole e lettere minuscole toupper tolower 26 toupper tolower toupper tolower char : carattere maiuscolo char : carattere maiuscolo Se ch è una lettera minuscola, ritorna l equivalente carattere maiuscolo, se no ritorna ch stesso Se ch è una lettera minuscola, ritorna l equivalente carattere maiuscolo, se no ritorna ch stesso for(i=0; s[i]!=0; i++) for(i=0; s[i]!=0; i++) s[i] = toupper(s[i]) ; s[i] = tolower(s[i]) ; 27 28 Copia e concatenazione <string.h> Trasferiscono il contenuto di una stringa in un altra Sostituendolo Accodandolo strcpy strncpy strcat strncat 30

strcpy strncpy strcpy strncpy dst : stringa src : stringa nessuno utile Copia il contenuto della stringa src all interno della stringa dst (che deve avere lunghezza sufficiente). strcpy(s1, s2) ; strcpy(s, "") ; strcpy(s1, "ciao") ; 31 dst : stringa src : stringa n : numero max caratteri nessuno utile Copia il contenuto della stringa src (massimo n caratteri) all interno della stringa dst. strncpy(s1, s2, 20) ; strncpy(s1, s2, MAX) ; 32 strcat strncat strcat strncat dst : stringa src : stringa nessuno utile Accoda il contenuto della stringa src alla fine della stringa dst (che deve avere lunghezza sufficiente). strcat(s1, s2) ; strcat(s1, " ") ; dst : stringa src : stringa n : numero max caratteri nessuno utile Accoda il contenuto della stringa src (massimo n caratteri) alla fine della stringa dst. strncat(s1, s2) ; 33 34 Confronto di stringhe <string.h> Confrontano due stringhe sulla base dell ordine lessicografico imposto dalla tabella dei codici ASCII strcmp strncmp 36

strcmp strncmp strcmp strncmp s1 : stringa s2 : stringa int : risultato confronto Risultato <0 se s1 precede s2 Risultato ==0 se s1 è uguale a s2 Risultato >0 se s1 segue s2 if(strcmp(s, r)==0) {...} while(strcmp(r,"fine")!=0) {...} 37 s1 : stringa s2 : stringa n : numero max caratteri int : risultato confronto Simile a strcmp, ma confronta solo i primi n caratteri, ignorando i successivi. if(strncmp(r, "buon", 4)==0) (buongiorno, buonasera, buonanotte) 38 Ricerca <string.h> Ricercano all interno di una stringa data Se compare un carattere Se compare una sotto-stringa Se compare una sequenza qualsiasi composta di caratteri dati strchr strstr strspn strcspn 40 strchr strstr strchr strstr ==NULL oppure!=null Risultato!=NULL se il carattere ch compare nella stringa. Risultato ==NULL se non compare. r : stringa ==NULL oppure!=null Risultato!=NULL se la sotto-stringa r compare nella stringa s. Risultato ==NULL se non compare. if(strchr(s, '.')!=NULL)... if(strchr(s, ch)==null)... if(strstr(s, "xy")!=null)... if(strstr(s, s1)==null)... 41 42

strspn strcspn strspn strcspn r : stringa r : stringa int : lunghezza sequenza iniziale int : lunghezza sequenza iniziale Calcola la lunghezza della parte iniziale di s che è composta esclusivamente dei caratteri presenti in r (in qualsiasi ordine). Calcola la lunghezza della parte iniziale di s che è composta esclusivamente da caratteri non presenti in r (in qualsiasi ordine). lun = strspn(s, " ") ; lun = strspn(s, " :,;.") ; lun = strcspn(s, " ") ; lun = strcspn(s, " :,;.") ; 43 44 Conversioni numero-stringa <stdlib.h> Mettono in relazione un valore numerico (intero o reale) con la sua rappresentazione come caratteri all interno di una stringa "372" 372 (int) "3.0" 3.0 (float) atoi atof In futuro: sscanf sprintf 46 atoi atof atoi atof #include <stdlib.h> #include <stdlib.h> int : valore estratto double/float : valore estratto Analizza la stringa s ed estrae il valore intero in essa contenuto (a partire dai primi caratteri). Analizza la stringa s ed estrae il valore reale in essa contenuto (a partire dai primi caratteri). n = atoi(s) ; n = atoi("232abc") ; x = atof(s) ; x = atof("2.32abc") ; 47 48