Stringhe di caratteri In linguaggio C. Stringhe Un insieme di caratteri in sequenza forma una...

12
Stringhe di Stringhe di caratteri caratteri In linguaggio C In linguaggio C

Transcript of Stringhe di caratteri In linguaggio C. Stringhe Un insieme di caratteri in sequenza forma una...

Page 1: Stringhe di caratteri In linguaggio C. Stringhe Un insieme di caratteri in sequenza forma una stringa Alcuni linguaggi definiscono per le stringhe uno.

Stringhe di Stringhe di carattericaratteri

In linguaggio CIn linguaggio C

Page 2: Stringhe di caratteri In linguaggio C. Stringhe Un insieme di caratteri in sequenza forma una stringa Alcuni linguaggi definiscono per le stringhe uno.

StringheStringheUn insieme di caratteri in sequenza forma Un insieme di caratteri in sequenza forma una stringauna stringa

Alcuni linguaggi definiscono per le stringhe Alcuni linguaggi definiscono per le stringhe uno specifico tipo di dato e offrono metodi uno specifico tipo di dato e offrono metodi specifici per gestire valori di quel tipo. specifici per gestire valori di quel tipo.

Il linguaggio C non fornisce un tipo di dato Il linguaggio C non fornisce un tipo di dato specifico per le stringhe che vengono specifico per le stringhe che vengono trattate come array di caratteri.trattate come array di caratteri.

char nomeStudente[10];char nomeStudente[10];

Page 3: Stringhe di caratteri In linguaggio C. Stringhe Un insieme di caratteri in sequenza forma una stringa Alcuni linguaggi definiscono per le stringhe uno.

Le stringhe in CLe stringhe in Cchar char nomeScuola[]=“Itis”nomeScuola[]=“Itis”

nomeScuolanomeScuola

00 II

11 tt

22 ii

33 ss

44 /0/0

Nell’esempio viene Nell’esempio viene dichiarato l’array di dichiarato l’array di caratteri nomeScuola e caratteri nomeScuola e inizializzato con il inizializzato con il valore “Itis”.valore “Itis”.

Il numero di elementi Il numero di elementi dell’array è determinato dell’array è determinato dalla lunghezza della dalla lunghezza della stringa più 1.stringa più 1.

L’elemento in più è L’elemento in più è necessario al linguaggio necessario al linguaggio per memorizzare il per memorizzare il carattere terminatore di carattere terminatore di stringa: \0, conosciuto stringa: \0, conosciuto come il carattere null.come il carattere null.

Page 4: Stringhe di caratteri In linguaggio C. Stringhe Un insieme di caratteri in sequenza forma una stringa Alcuni linguaggi definiscono per le stringhe uno.

Un esempioUn esempio

Page 5: Stringhe di caratteri In linguaggio C. Stringhe Un insieme di caratteri in sequenza forma una stringa Alcuni linguaggi definiscono per le stringhe uno.

InizializzazioneInizializzazione

Page 6: Stringhe di caratteri In linguaggio C. Stringhe Un insieme di caratteri in sequenza forma una stringa Alcuni linguaggi definiscono per le stringhe uno.

Stringhe e … caratteriStringhe e … caratteri

Attenzione alla differenza tra le seguenti Attenzione alla differenza tra le seguenti dichiarazioni con inizializzazione.dichiarazioni con inizializzazione.

char nota = 'C';char nota = 'C';

che assegna alla variabile nota di tipo char il valore che assegna alla variabile nota di tipo char il valore CC

char nota[] = "C";char nota[] = "C";

che assegna allche assegna all’’array nota[] la stringa di due array nota[] la stringa di due caratteri caratteri C\0C\0

Un carattere inserito tra apici singoli è trattato come Un carattere inserito tra apici singoli è trattato come un singolo carattere.un singolo carattere.

Page 7: Stringhe di caratteri In linguaggio C. Stringhe Un insieme di caratteri in sequenza forma una stringa Alcuni linguaggi definiscono per le stringhe uno.

Selezione di un carattereSelezione di un carattere

……

char nomeScuola[] = ”Itis parma";char nomeScuola[] = ”Itis parma";

nomeScuola[5] = nomeScuola[5] = ‘‘PP’’;;

LL’’assegnamento al sesto elemento di assegnamento al sesto elemento di nomeScuola del carattere P modifica la nomeScuola del carattere P modifica la stringa che diviene stringa che diviene ““Itis ParmaItis Parma””..

Il carattere terminatore \0 consente di gestire Il carattere terminatore \0 consente di gestire le stringhe senza conoscerne a priori la le stringhe senza conoscerne a priori la dimensione.dimensione.

Page 8: Stringhe di caratteri In linguaggio C. Stringhe Un insieme di caratteri in sequenza forma una stringa Alcuni linguaggi definiscono per le stringhe uno.

Caratteri e codici ASCIICaratteri e codici ASCII

In linguaggio CIn linguaggio C

char nomeScuola[] = ”Itis Parma";char nomeScuola[] = ”Itis Parma";

int i=0;int i=0;

while(nomeScuola[i]!=while(nomeScuola[i]!=’’\0\0’’){){

printf(printf(““carattere %c ASCII %d\ncarattere %c ASCII %d\n””, nomeScuola[i], nomeScuola[i]);, nomeScuola[i], nomeScuola[i]);

i++;i++;

}}

……

Il codice visualizza ogni elemento sia sotto forma di carattere che di codice ASCIIIl codice visualizza ogni elemento sia sotto forma di carattere che di codice ASCII

Page 9: Stringhe di caratteri In linguaggio C. Stringhe Un insieme di caratteri in sequenza forma una stringa Alcuni linguaggi definiscono per le stringhe uno.

EsempioEsempiofunzione che ritorna il numero di caratteri funzione che ritorna il numero di caratteri presenti in una stringapresenti in una stringa

Page 10: Stringhe di caratteri In linguaggio C. Stringhe Un insieme di caratteri in sequenza forma una stringa Alcuni linguaggi definiscono per le stringhe uno.

ProblemaProblema

Problema: concatenare due parole Problema: concatenare due parole immesse dallimmesse dall’’utente, aggiungendo la utente, aggiungendo la seconda alla prima e inserendo tra le due seconda alla prima e inserendo tra le due un carattere spazio.un carattere spazio.

Input: due parole.Input: due parole.

Output: visualizzare la stringa frutto Output: visualizzare la stringa frutto della concatenazione.della concatenazione.

Page 11: Stringhe di caratteri In linguaggio C. Stringhe Un insieme di caratteri in sequenza forma una stringa Alcuni linguaggi definiscono per le stringhe uno.

// Concatenazione di stringhe#include <stdio.h>

int main(){

char p1[25],p2[25],p3[50]; //le tre stringheint i,j; //indici per scorrere i

caratteriprintf("Inserisci la prima parola");scanf("%s”,p1);printf("Inserisci la seconda parola");scanf("%s”,p2);for(i=0;p1[i]!='\0';i++)

p3[i]=p1[i]; //copio i caratteri della prima parola

p3[i]=' '; //inserisco uno spazioi++;for(j=0;p2[j]!='\0';j++)

p3[i+j]=p2[j];p3[i+j]='\0'; //inserisco il terminatore

printf(“%s”,p3);}

Page 12: Stringhe di caratteri In linguaggio C. Stringhe Un insieme di caratteri in sequenza forma una stringa Alcuni linguaggi definiscono per le stringhe uno.

Libreria string.hLibreria string.h

La libreria string.h rende disponibili molte funzioni standard per La libreria string.h rende disponibili molte funzioni standard per gestire le stringhe.:gestire le stringhe.:

strcpy(stringa1, stringa2) copia stringa2 su stringa1;strcpy(stringa1, stringa2) copia stringa2 su stringa1;

strncpy(stringa1, stringa2, n) copia i primi n caratteri di stringa2 in strncpy(stringa1, stringa2, n) copia i primi n caratteri di stringa2 in stringa1;stringa1;

strcat(stringa1, stringa2) concatena stringa2 a stringa1;strcat(stringa1, stringa2) concatena stringa2 a stringa1;

strcmp(stringa1, stringa2) confronta stringa2 con stringa1, se sono strcmp(stringa1, stringa2) confronta stringa2 con stringa1, se sono uguali restituisce 0, se stringa1 è maggiore di stringa2 un valore uguali restituisce 0, se stringa1 è maggiore di stringa2 un valore positivo, altrimenti un valore negativo;positivo, altrimenti un valore negativo;

intero = atoi(stringa) converte una stringa in un intero;intero = atoi(stringa) converte una stringa in un intero;

reale = atof(stringa) converte una stringa in un valore in virgola reale = atof(stringa) converte una stringa in un valore in virgola mobile double;mobile double;

intero = strlen(stringa) conta il numero di caratteri di una stringa;intero = strlen(stringa) conta il numero di caratteri di una stringa;