Caratteri e stringhe. Funzioni di libreria



Documenti analoghi
Caratteri e stringhe

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

Caratteri e stringhe in C: scheda riassuntiva

Riferimenti al materiale

Caratteri e stringhe. Programmazione in C. Riferimenti al materiale

Operazioni elementari sulle stringhe

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

Caratteri e stringhe

Capitolo 8 - Caratteri e Stringhe

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

Stringhe in C. Emilio Di Giacomo

Capitolo 8 Caratteri e Stringhe

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

STRINGHE: ARRAY DI CARATTERI! a p e \0

Caratteri e stringhe

Stringhe. Concetti chiave

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

Elementi di Programmazione in C++

A. Ferrari. stringhe di caratteri In linguaggio C

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 \ };

Linguaggio C: Stringhe Valeria Cardellini

Corso sul linguaggio C Modulo Tipi di dato

1 MANIPOLAZIONE DI STRINGHE ZERO-TERMINATE

Lezione XI Le stringhe

Caratteri e stringhe

Operazioni sulle stringhe

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

RIPRENDIAMO I PUNTATORI

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

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

I puntatori e l allocazione dinamica di memoria. Esercizi risolti

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

Stringhe. Prof. Lorenzo Porcelli

Elementi di Informatica

Corso di Fondamenti di Informatica Tipi strutturati: Stringhe

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

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

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

Esercitazioni di Programmazione II. Chiara Petrioli

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Linguaggio C: Stringhe di caratteri e File

ELEMENTI DI INFORMATICA. Linguaggio C

Corso Programmazione

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

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

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

Marta Capiluppi Dipartimento di Informatica Università di Verona

Lezione 8: Stringhe ed array multidimensionali

Introduzione al C. Unità 8 Stringhe

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

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

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

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

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

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

Aritmetica dei. Alessandra Giordani Mercoledì 9 maggio

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

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

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

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

Le stringhe. Le stringhe

Informatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Stringhe Ricerca binaria

Le stringhe. Le stringhe sono sequenze di caratteri,

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

Lezione 6: Funzioni di I/O avanzate

Esercizi. Stringhe. Stringhe Ricerca binaria

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

I/O Avanzato in C: scheda riassuntiva

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

Esercitazione di Reti degli elaboratori

Linguaggio C - Stringhe

Le stringhe. Le stringhe sono sequenze di caratteri,

Puntatori e array. Violetta Lonati

Settimana n.9. Obiettivi Stringhe Matrici Vettori di Stringhe



Confrontare valori 1

Matrici Vettori di stringhe Esercizi risolti

Caratteri e stringhe

Stringhe: vettori di caratteri con terminatore

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

Introduzione al linguaggio C Dati aggregati

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

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

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

C: panoramica. Violetta Lonati

Librerie C. Corso di Linguaggi e Traduttori 1 AA

Corso di Informatica A.A

Programmazione Procedurale in Linguaggio C++

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

Il codice ASCII. I caratteri e le stringhe. Il codice ASCII standard. Il codice ASCII standard

Dati aggregati. Violetta Lonati

Esame di Programmazione I e Informatica Generale I

Stringhe e tipi di dati strutturati

Caratteri e stringhe. Vettori di caratteri. Il tipo stringa Terminatore nullo Input/output di stringhe Politecnico di Torino 1

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 2006 Politecnico di Torino 1

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 2006 Politecnico di Torino 2

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 5 Rappresentazione strlen #include <string.h> s : stringa int : la lunghezza della stringa Calcola la lunghezza della stringa s lun = strlen(s) ; 6 2006 Politecnico di Torino 3

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 2006 Politecnico di Torino 4

Lunghezza di stringhe Definite in <string.h> Determina la lunghezza di una stringa data strlen 9 strlen strlen #include <string.h> s : stringa int : la lunghezza della stringa Calcola la lunghezza della stringa s lun = strlen(s) ; 10 2006 Politecnico di Torino 5

Classificazione di caratteri Definite in <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 2006 Politecnico di Torino 6

isalpha isalpha Vero/falso Ritorna vero se il carattere ch è una lettera maiuscola o minuscola (A...Z, a...z), falso altrimenti if(isalpha(ch)) {... } 13 isupper isupper Vero/falso Ritorna vero se il carattere ch è una lettera maiuscola (A...Z), falso altrimenti if(isupper(ch)) {... } 14 2006 Politecnico di Torino 7

islower islower Vero/falso Ritorna vero se il carattere ch è una lettera minuscola (a...z), falso altrimenti if(islower(ch)) {... } 15 isdigit isdigit Vero/falso Ritorna vero se il carattere ch è una cifra numerica (0...9), falso altrimenti if(isdigit(ch)) {... } 16 2006 Politecnico di Torino 8

isalnum isalnum Vero/falso Ritorna vero se il carattere ch è una lettera oppure una cifra numerica, falso altrimenti. Equivalente a isalpha(ch) isdigit(ch) if(isalnum(ch)) {... } 17 isxdigit isxdigit Vero/falso Ritorna vero se il carattere ch è una una cifra numerica oppure una lettera valida in base 16 (a...f, A...F), falso altrimenti. if(isxdigit(ch)) {... } 18 2006 Politecnico di Torino 9

ispunct ispunct Vero/falso Ritorna vero se il carattere ch è un simbolo di punteggiatura (!"#$%&'()*+,-./:;<=>?@ [\]^_`{ }~), falso altrimenti. if(ispunct(ch)) {... } 19 isgraph isgraph Vero/falso Ritorna vero se il carattere ch è un qualsiasi simbolo visibile (lettera, cifra, punteggiatura), falso altrimenti. if(isgraph(ch)) {... } 20 2006 Politecnico di Torino 10

isprint isprint Vero/falso Ritorna vero se il carattere ch è un qualsiasi simbolo visibile oppure lo spazio, falso altrimenti. if(isprint(ch)) {... } 21 isspace isspace Vero/falso Ritorna vero se il carattere ch è invisibile (spazio, tab, a capo), falso altrimenti. if(isspace(ch)) {... } 22 2006 Politecnico di Torino 11

iscntrl iscntrl Vero/falso Ritorna vero se ch è un carattere di controllo (ASCII 0...31, 127), falso altrimenti. if(iscntrl(ch)) {... } 23 Vista d insieme A...F a...f 0...9 Caratteri di controllo isdigit isxdigit G...Z g...z Tab Newline isupper islower iscntrl isalpha isalnum Spazio isspace!"#$%&'( )*+,-./: ;<=>?@[\ ]^_`{ }~ ispunct isgraph isprint 24 2006 Politecnico di Torino 12

Trasformazione di caratteri Definite in <ctype.h> Convertono tra lettere maiuscole e lettere minuscole toupper tolower 26 2006 Politecnico di Torino 13

toupper toupper char : carattere maiuscolo Se ch è una lettera minuscola, ritorna l equivalente carattere maiuscolo, se no ritorna ch stesso for(i=0; s[i]!=0; i++) s[i] = toupper(s[i]) ; 27 tolower tolower char : carattere maiuscolo Se ch è una lettera maiuscola, ritorna l equivalente carattere minuscolo, se no ritorna ch stesso for(i=0; s[i]!=0; i++) s[i] = tolower(s[i]) ; 28 2006 Politecnico di Torino 14

Copia e concatenazione Definite in <string.h> Trasferiscono il contenuto di una stringa in un altra Sostituendolo Accodandolo strcpy strncpy strcat strncat 30 2006 Politecnico di Torino 15

strcpy strcpy #include <string.h> 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 strncpy strncpy #include <string.h> 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 2006 Politecnico di Torino 16

strcat strcat #include <string.h> 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, " ") ; 33 strncat strncat #include <string.h> 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, 10) ; 34 2006 Politecnico di Torino 17

Confronto di stringhe Definite in <string.h> Confrontano due stringhe sulla base dell ordine lessicografico imposto dalla tabella dei codici ASCII strcmp strncmp 36 2006 Politecnico di Torino 18

strcmp strcmp #include <string.h> 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 strncmp strncmp #include <string.h> 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 2006 Politecnico di Torino 19

Ricerca Definite in <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 2006 Politecnico di Torino 20

strchr strchr #include <string.h> s : stringa ==NULL oppure!=null Risultato!=NULL se il carattere ch compare nella stringa. Risultato ==NULL se non compare. if(strchr(s, '.')!=NULL)... if(strchr(s, ch)==null)... 41 strstr strstr #include <string.h> s : stringa r : stringa ==NULL oppure!=null Risultato!=NULL se la sotto-stringa r compare nella stringa s. Risultato ==NULL se non compare. if(strstr(s, "xy")!=null)... if(strstr(s, s1)==null)... 42 2006 Politecnico di Torino 21

strspn strspn #include <string.h> s : stringa r : stringa int : lunghezza sequenza iniziale Calcola la lunghezza della parte iniziale di s che è composta esclusivamente dei caratteri presenti in r (in qualsiasi ordine). lun = strspn(s, " ") ; lun = strspn(s, " :,;.") ; 43 strcspn strcspn #include <string.h> s : stringa r : stringa int : lunghezza sequenza iniziale Calcola la lunghezza della parte iniziale di s che è composta esclusivamente da caratteri non presenti in r (in qualsiasi ordine). lun = strcspn(s, " ") ; lun = strcspn(s, " :,;.") ; 44 2006 Politecnico di Torino 22

Conversioni numero-stringa Definite in <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 2006 Politecnico di Torino 23

atoi atoi #include <stdlib.h> s : stringa int : valore estratto Analizza la stringa s ed estrae il valore intero in essa contenuto (a partire dai primi caratteri). n = atoi(s) ; n = atoi("232abc") ; 47 atof atof #include <stdlib.h> s : stringa double/float : valore estratto Analizza la stringa s ed estrae il valore reale in essa contenuto (a partire dai primi caratteri). x = atof(s) ; x = atof("2.32abc") ; 48 2006 Politecnico di Torino 24