Gestione delle stringhe in C



Похожие документы
Le stringhe. Le stringhe

Linguaggio C - Stringhe

RICERCA DI UN ELEMENTO

Fondamenti di Informatica 2

Caratteri e stringhe Esercizi risolti

Esempio: Array di struct

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp KP Cap. 6 pp

Breve riepilogo della puntata precedente:

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Esercizio 1. Esercizio 1

Esercizi di programmazione in C

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Gestione dei File in C

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Gestione dei File. dischi nastri cd

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

Esercizio 1. Esercizio 2

Introduzione al Linguaggio C

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Introduzione alla programmazione in C

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

puntatori Lab. Calc. AA 2007/08 1

Alcune regole di base per scrivere un programma in linguaggio C

Calcolare il massimo di una lista

Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Corso di Fondamenti di Informatica

Esercitazione di Reti degli elaboratori

Lab 11 Gestione file di testo"

Codifica: dal diagramma a blocchi al linguaggio C++

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

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

File di testo e file binari Directory

I puntatori e l allocazione dinamica di memoria

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi terza

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

STRINGHE: ARRAY DI CARATTERI! a p e \0

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

LINGUAGGI DI PROGRAMMAZIONE

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Esame del 3 febbraio 2010

Matlab: Gestione avanzata dei file

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Concetti chiave. Struct. Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture

ZZZ01 Esercizi Vari. Esercizi per preparazione alla prova pratica di laboratorio

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

MAGAZZINO.CPP January 2, 2008 Page 1

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag <script> inserito nella sezione <head> con la seguente sintassi:

Guida Utente per Web Form Cambio Password

Funzioni. Il modello console. Interfaccia in modalità console

Appello di Informatica B

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

Esercizio 1. Esercizi 5. Esercizio 3. Esercizio 2 CICLI

Fondamenti di Informatica T. Linguaggio C: File

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

Linguaggio C - Funzioni

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-

Record in C: il costruttore struct.

Esercizi svolti durante le ore di Informatica e Sistemi automatici nelle classi del Liceo Scientifico Tecnologico del Liceo Milli di Teramo

Funzioni in C. Violetta Lonati

Informatica B

FastPRESS WEB. In questa schermata è possibile scegliere il tipo di consultazione che si desidera effettuare.

Scrivere uno script php che, dato un array associativo PERSONE le cui chiavi sono i

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 13 File Binari

BOZZA. cin per la comunicazione dal dispositivo di input standard, la tastiera, al programma (stream di input standard)

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

INFORMATICA - I puntatori Roberta Gerboni

IPC System V. Code di messaggi

Esercitazione 10. Strutture ed Enumerazioni. Allocazione dinamica di memoria

Comandi di Input/Output in Matlab

Algoritmi di Ricerca. Esempi di programmi Java

Транскрипт:

Gestione delle stringhe in C 1 Generalità Una stringa è un vettore di caratteri il cui ultimo elemento è un carattere terminatore (o di fine stringa), codificato dal carattere di codice 0 e rappresentato in C dal carattere '\0'. Il vettore di caratteri che rappresenta la stringa sarà perciò formato da un numero di elementi pari al numero di caratteri della stringa più uno (il carattere di fine stringa). La stringa Rossi" è rappresentata in C da un vettore di 6 caratteri: 5 caratteri per memorizzare Rossi più il carattere di terminazione: 0 R 1 o 2 s 3 s 4 i 5 \0 2 1

Dichiarazione di una stringa In C per dichiarare una stringa in grado di contenere N caratteri occorre dichiarare un vettore di N+1 caratteri. Es. per dichiarare una variabile stringa atta a contenere un codice fiscale occorre dichiarare un vettore di 17 caratteri: 16 caratteri per memorizzare i caratteri e le cifre del codice fiscale 1 carattere per il terminatore di stringa ('\0') char codice_fiscale[17]; 3 Lettura e scrittura di una stringa L'identificatore di formato utilizzato dalle funzioni di lettura (scanf) e scrittura (printf) per manipolare le stringhe è il %s. Esempio: Leggere e stampare una stringa { char s[20]; printf("inserisci una stringa: "); scanf("%s", s); printf("hai inserito la stringa: %s", s); Come si vede si è scritto scanf("%s", s) e non scanf("%s", &s). Il motivo di ciò sarà chiarito quando sarà introdotto il concetto di puntatore. 4 2

Funzioni di Libreria La libreria standard del C mette a disposizione diverse funzioni per la gestione delle stringhe. Per utilizzare tali funzioni è necessario includere nel proprio file sorgente string.h. 5 Funzione strcmp La funzione strcmp consente di confrontare due stringhe passate come parametro. Date due stringhe, stringa1 e stringa2, 0 se stringa1 == stringa2 strcmp(stringa1, stringa2) = <0 se stringa1 < stringa2 >0 se stringa1 > stringa2. 6 3

Scrivere un programma che legga e confronti due stringhe { char stringa1[20], stringa2[20]; printf("inserisci la prima stringa: "); scanf("%s", stringa1); printf("inserisci la seconda stringa: "); scanf("%s", stringa2); if (strcmp(stringa1, stringa2)== 0) printf("le due stringhe sono uguali"); else if (strcmp(stringa1, stringa2) < 0) printf("%s < %s", stringa1, stringa2); else printf("%s > %s", stringa1, stringa2); 7 Funzione strcpy Poichè le stringhe sono vettori di caratteri, non è possibile assegnare ad una variabile stringa un'altra variabile stringa utilizzando l'operatore =. Le possibili soluzioni sono due: copiare elemento per elemento dalla stringa sorgente alla stringa destinazione fino a quando si incontra il carattere di fine stringa; utilizzare la funzione strcpy. Il formato della funzione strcpy è il seguente: strcpy(destinazione,sorgente) dove destinazione è la la variabile stringa di destinazione, sorgente è la variabile stringa sorgente. La stringa destinazione deve essere grande da ospitare tutti gli elementi della stringa sorgente. 8 4

Scrivere un programma che letta una stringa immessa da tastiera la copia in un'altra stringa. { char sorgente[20], destinazione[20]; printf("inserisci una stringa: "); scanf("%s", sorgente); strcpy(destinazione, sorgente); printf("destinazione = %s", destinazione); 9 Funzione strlen La funzione strlen(stringa) restituisce la lunghezza della stringa passata come parametro. Per lunghezza della stringa si intende il numero di caratteri contenuti nella stringa escluso il carattere di terminazione. Es. Scrivere un programma che chieda all'utente di inserire una parola e ne restituisca la lunghezza. { char stringa[50]; int lunghezza; printf("scrivi una parola: "); scanf("%s", stringa); lunghezza = strlen(stringa); printf("%s è formata da %d caratteri.",stringa, lunghezza); 10 5

Funzione strcat La funzione strcat(stringa1, stringa2) consente di concatenare le due stringhe passate come parametro. Il risultato della concatenazione è memorizzato nel primo parametro. Se per esempio stringa1 contiene "Giuseppe" e stringa2 contiene "Rossi, allora a seguito dell'esecuzione di strcat(stringa1, stringa2) stringa1 conterrà la stringa "GiuseppeRossi". 11 Scrivere un programma che letti il nome e cognome di un utente li concateni in un'unica stringa. { char nome[10], cognome[10], nome_cognome[20]; printf("inserisci il tuo nome: "); scanf("%s", nome); printf("inserisci il tuo cognome: "); scanf("%s", cognome); strcpy(nome_cognome, nome); strcat(nome_cognome, cognome); printf("nome+cognome = %s", nome_cognome); 12 6

Vettore di stringhe La dichiarazione di un vettore i cui elementi sono delle stringhe è analoga a quella dei vettori di elementi di tipo semplice C La sintassi da utilizzare per la dichiarazione di una variabile vettore di N elementi di tipo stringa di D caratteri è la seguente: char NomeVettore[N][D]; 13 Leggere e visualizzare un vettore di 10 stringhe di 20 caratteri #define N 10 #define D 20 { char V[N][D]; int i; for(i=0;i<n;i++) { printf( Inserisci una nuova stringa ); scanf( %s,v[i]); for(i=0;i<n;i++) printf( %s,v[i]); 14 7

Leggere un vettore di 10 stringhe di 20 caratteri e realizzare la ricerca sequenziale #define N 10 #define D 20 { char V[N][D],stringa[D]; int i,trovato; for(i=0;i<n;i++) { printf( Inserisci una nuova stringa ); scanf( %s,v[i]); printf( Inserire una stringa ); scanf( %s,stringa); i=0;trovato=0; while(i<=n &&!trovato) if(strcmp(stringa,v[i])==0) trovato=1; else i++; if(trovato) printf( %s,v[i]); else printf( Non e presente ); 15 Leggere un vettore di 20 stringhe di 30 caratteri e applicare il bubble sort #define N 20 #define D 30 { char V[N][D],stringa[D]; int i,sup; for(i=0;i<n;i++) { printf( Inserisci una nuova stringa ); scanf( %s,v[i]); for(sup=n-1; sup>0;sup--) for(i=0;i<sup;ind++) if(strcmp(s[ind+1],s[ind])<0) { strcpy(aux,s[ind+1]); strcpy(s[ind+1],s[ind]); strcpy(s[ind],aux); for(i=0;i<n;ind++) printf("%s\n",s[i]); 16 8