Introduzione al C. Unità 8 Stringhe
|
|
- Gabriele Coppola
- 7 anni fa
- Visualizzazioni
Transcript
1 Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 8 Stringhe D. Bloisi, A. Pennisi, S. Peluso, S. Salza
2 Sommario Unità 8 Array di caratteri: stringhe Inizializzazione di stringhe Lettura e scrittura di stringhe Operazioni sulle stringhe Funzioni per la manipolazione delle stringhe Stringhe - Unità /2014 Pagina 2
3 Array di caratteri Un caso particolare di array è quello costituito da caratteri. Infatti, le sequenze di caratteri servono per gestire testi. In C si usa il termine stringa per indicare gli array di caratteri. La libreria <string.h> offre alcune funzioni speciali per gli array di caratteri. Pagina 3
4 Rappresentazione di stringhe in C Nel linguaggio C una stringa è rappresentata mediante un array di caratteri terminante con il carattere speciale '\0' (codice ASCII = 0), che, quindi, funge da terminatore di stringa. In questo modo è possibile conoscere la lunghezza di una stringa contando il numero di caratteri che precedono il carattere '\0'. Pagina 4
5 Esempio 1 #include <stdio.h> int main() { const int N = 25; char s[n]; s[0] = 'H'; s[1]='e'; s[2]='l'; s[3]='l'; s[4]='o'; s[5]='\0'; // terminatore stringa } printf("%s\n", s); return 0; Questo programma stampa Hello Nota: si utilizza il formato %s nella printf per le stringhe Pagina 5
6 Esempio 2 #include <stdio.h> int main() { Questo programma stampa const int N = 25; Helloaaaaaaaaaaaaaaaaaaaa char s[n]; int i; for(i = 0; i < N; i++) s[i] = 'a'; s[0] = 'H'; s[1]='e'; s[2]='l'; s[3]='l'; s[4]='o'; // mancato inserimento // del terminatore stringa printf("%s\n", s); return 0; } Pagina 6
7 Esempio 3 #include <stdio.h> int main() { const int N = 25; char s[n]; int i; for(i = 0; i < N; i++) s[i] = 'a'; } s[0] = 'H'; s[1]='e'; s[2]='l'; s[3]='l'; s[4]='o'; s[5]='\0'; // terminatore stringa printf("%s\n", s); return 0; Questo programma stampa Hello Pagina 7
8 Stringhe costanti Pagina 8
9 Stringhe e caratteri Pagina 9
10 Inizializzazione tramite stringa costante (1/3) #include <stdio.h> int main() { char str[10] = "some text"; printf("%s\n", str); return 0; } Pagina 10
11 Inizializzazione tramite stringa costante (2/3) Pagina 11
12 Inizializzazione tramite stringa costante (3/3) warning: excess elements in array initializer Pagina 12
13 Esempio #include <stdio.h> int main() { char str[10] = "some text"; printf("%s\n", str); printf("dimensione di str = %d\n, sizeof(str)); char s[] = {'g', 'u', 'a', 'r', 'd', 'a'}; printf("%s\n", s); printf("dimensione di s = %d\n", sizeof(s)); return 0; } Pagina 13
14 Possibile output some text dimensione di str = 10 guardasome text dimensione di s = 6 Manca il carattere di terminazione '\0' dopo l ultima 'a' di guarda Pagina 14
15 Modifica esempio #include <stdio.h> carattere speciale '\0' int main() { char str[10] = "some text"; printf("%s\n", str); printf("dimensione di str = %d\n, sizeof(str)); char s[] = {'g','u','a','r','d','a','\0'}; printf("%s\n", s); printf("dimensione di s = %d\n", sizeof(s)); return 0; } Pagina 15
16 Output some text dimensione di str = 10 guarda dimensione di s = 7 Pagina 16
17 Stringhe e array Pagina 17
18 Lettura e scrittura di stringhe (1/3) Si usano le funzioni scanf e printf con lo specificatore di formato %s: char str[4];! scanf( %s, str);! printf( %s, str);! Manca & dato che str è l indirizzo al primo elemento dell array Pagina 18
19 Lettura e scrittura di stringhe (2/3) Pagina 19
20 Lettura e scrittura di stringhe (3/3) Pagina 20
21 Stringhe e puntatori Pagina 21
22 Dimensione delle stringhe in C (1/4) Per le stringhe rappresentate come array di caratteri, bisogna distinguere tra Ø la dimensione dell array (staticamente determinato alla sua creazione) Ø la lunghezza della stringa, che può invece variare a tempo di esecuzione. Pagina 22
23 Dimensione delle stringhe in C (2/4) const int N = 256; char s[n]; s[0]= H ; s[1]= e ; s[2]= l ; s[3]= l ; s[4]= o ; s[5]= \0 ; // terminatore stringa Ø La dimensione dell array è 256 Ø La dimensione della stringa è 5 Pagina 23
24 Dimensione delle stringhe in C (3/4) La lunghezza (dimensione) della stringa deve essere sempre minore o uguale della dimensione dell array meno uno (perché bisogna considerare sempre il carattere terminatore della stringa). In caso contrario, si ha un accesso fuori dalla zona di memoria allocata alla stringa con conseguente possibilità di errori. Pagina 24
25 Dimensione delle stringhe in C (4/4) Il calcolo della lunghezza di una stringa, cioè il conteggio dei caratteri che precedono il terminatore di stringa, si effettua tramite la funzione strlen (vedi dopo). Tale funzione è però inefficiente (perché richiede un ciclo di scansione di tutta la stringa); quindi, a volte, si preferisce usare un argomento esplicito che contiene la lunghezza della stringa. Pagina 25
26 Funzione strlen! size_t strlen( const char *str ); restituisce la lunghezza del parametro str. E una funzione definita in <string.h> Pagina 26
27 Esempio strlen! #include <stdio.h> #include <string.h> int main() { char str[100] = "test string"; printf("%d\n", sizeof(str)); printf("%d\n", strlen(str)); return 0; } Questo programma stampa Pagina 27
28 Possibile implementazione di strlen! size_t strlen(const char *str) { const char* s = str; for( ; *s; ++s); return(s str); } Pagina 28
29 Esempio: contare le occorrenze di una lettera in una stringa (1/2) Scrivere una funzione che, presi come parametri una stringa (sotto forma di array di caratteri) ed un carattere c, restituisca il numero di occorrenze di c nella stringa. Pagina 29
30 Esempio: contare le occorrenze di una lettera in una stringa (2/2) int contalettera (const char s[], int N, char c) { int numlettera = 0; int pos = 0; while (pos < N) { if (s[pos] == c) numlettera++; pos++; } return numlettera; } Pagina 30
31 Versione con strlen! int contalettera (const char *s, char c) { int numlettera = 0; int pos = 0; int N = strlen(s); while (pos < N) { if (s[pos] == c) numlettera++; pos++; } return numlettera; } Pagina 31
32 Main di prova int main() { char s[256]; char c; printf("digitare una parola, poi premere INVIO\n"); scanf("%s", s); //pulisco il buffer in ingresso while(c!= '\n' && c!= EOF) { c = getchar(); } printf("digitare un carattere da cercare, poi premere INVIO\n"); scanf("%c", &c); int i = contalettera(s, c); printf("il carattere %c si trova %d volte in %s\n", c, i, s); return 0; } Pagina 32
33 Esempio: codifica di una stringa (1/2) Scrivere una funzione che, presi come parametri una stringa (sotto forma di array di caratteri) ed un intero d, restituisca la stringa opportunamente codificata. La codifica è ottenuta sostituendo ciascun carattere con il carattere che ha codice pari al codice del carattere da sostituire incrementato di d. Esempio "ciao" con d=3 diventerà "fldr" Pagina 33
34 Esempio: codifica di una stringa (2/2) void codifica(const char *str, char *strris, int d) { char c; int ci; int N = strlen(str); int i; for (i = 0; i < N; i++) strris[i] = d + str[i]; strris[n]= \0 ; // terminatore di stringa return; } Pagina 34
35 Note Nota 1: il primo dei due parametri di tipo array di caratteri ha il ruolo di input, ed è quindi dichiarato const, mentre il secondo ha il ruolo di output e non può essere dichiarato const in quanto verrà modificato. Nota 2: nell istruzione strris[i] = d + str[i]; c è una conversione implicita ad intero per poter effettuare la somma e poi una conversione di nuovo a carattere per memorizzare il risultato. Nota 3: in questa funzione si assume che sia stata già allocata memoria per la stringa di output strris di dimensione almeno pari a quella di str. Inoltre, è necessario aggiungere il carattere '\0' per terminare la stringa di output. Pagina 35
36 Esempio: lunghezza della più lunga sottosequenza (1/2) Se la stringa passata come parametro è " ", allora la più lunga sottosequenza di soli '0' è quella sottolineata, che ha lunghezza 3. Pagina 36
37 Esempio: lunghezza della più lunga sottosequenza (1/2) int sottosequenza(const char * s) { char bit; // l elemento corrente della sequenza int i, cont = 0; // lunghezza attuale della sequenza di zeri int maxlung = 0; // valore temporaneo della massima lunghezza int N = strlen(s); // lunghezza della stringa for (i = 0; i < N; i++) { bit = s[i]; if (bit == '0') { // e stato letto un altro '0' cont++; // aggiorna la lunghezza della sequenza // corrente if (cont > maxlung) // se necessario, aggiorna maxlung = cont;// il massimo temporaneo } else // e stato letto un '1' cont = 0; // azzera la lunghezza della sequenza //corrente } return maxlung; } Pagina 37
38 Header string.h! string.h è l header file che contiene le definizioni di funzioni che permettono la manipolazione delle stringhe. Ad esempio, è definita in string.h size_t strlen( const char *str ); che restituisce la lunghezza del parametro str. Pagina 38
39 Comparazione di stringhe in C int strcmp(const char *str1, const char *str2); Effettua un confronto lessicografico tra due stringhe restituendo un valore < 0 se str1 precede str2, = 0 se str1 è uguale a str2, > 0 se str1 segue str2. Pagina 39
40 Confronto lessicografico Una stringa s precede una stringa t in ordine lessicografico se s è un prefisso di t, oppure se c e d sono il primo carattere rispettivamente di s e t in cui s e t differiscono, allora c precede d nell ordinamento dei caratteri. Nota: per i caratteri che sono lettere alfabetiche, l ordinamento è quello alfabetico. Le cifre precedono le lettere e le lettere maiuscole precedono quelle minuscole. Pagina 40
41 Esempi auto precede automatico Automatico precede auto albero precede alto H2O precede HOTEL Pagina 41
42 Esercizio Si scriva un programma che utilizzi la funzione strcmp per verificare l ordine lessicografico mostrato negli esempi precedenti. Pagina 42
43 Soluzione (da completare) #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char a[20] = "auto"; char b[20] = "automatico"; if(strcmp(a, b) < 0) { printf("%s precede %s\n", a, b); } else if(strcmp(a, b) == 0) { printf("%s uguale %s\n", a, b); } else { printf("%s segue %s\n", a, b); } return EXIT_SUCCESS; } Pagina 43
44 Copia di stringhe in C char *strcpy(char *dest, const char *src); Copia la stringa src in dest e restituisce dest; dest viene quindi modificata. char * strncpy(char *dest, const char *src, size_t n); Copia i primi n caratteri di src in dest e restituisce dest; dest viene quindi modificata. Pagina 44
45 Esempio d uso di strcpy! #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char str1[] = "esempio"; char str2[40]; char str3[40]; strcpy(str2, str1); strcpy(str3, "copia riuscita"); printf("str1: %s\nstr2: %s\nstr3: %s\n", str1, str2, str3); return EXIT_SUCCESS; } Pagina 45
46 Nota su strcpy! La funzione strcpy copia la stringa src nella stringa dest, incluso il carattere terminatore e la restituisce. Il contenuto precedente di dest viene perduto. Il controllo che lo spazio puntato da dest sia sufficiente rimane a carico del programmatore. Pagina 46
47 Esempio d uso di strncpy! #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char str1[] = "esempio"; char str2[40]; char str3[40]; strcpy(str2, str1); strncpy(str3, "copia riuscita", 8); printf("str1: %s\nstr2: %s\nstr3: %s\n", str1, str2, str3); return EXIT_SUCCESS; } Pagina 47
48 Esecuzione str1: esempio str2: esempio str3: copia ri[d Ç Perché si può ottenere questo risultato? Pagina 48
49 Concatenazione di stringhe in C char *strcat(char *str1, const char *str2); Concatena str2 alla fine di str1 e restituisce str1; str1 viene quindi modificata. char * strncat(char *str1, const char *str2, size_t n); Concatena i primi n caratteri di str2 alla fine di str1 e restituisce str1; str1 viene quindi modificata. Pagina 49
50 Esempio d uso di strcat! #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char str[80]; strcpy(str, "queste "); strcat(str, "stringhe "); strcat(str, "sono "); strcat(str, "concatenate."); printf("%s\n", str); return EXIT_SUCCESS; } Pagina 50
51 Occorrenze di stringhe in C char *strstr(const char *str1, const char *str2); Restituisce il puntatore alla prima occorrenza della stringa str2 in str1, oppure NULL se str2 non compare come sotto-stringa di str1. Pagina 51
52 Esempio d uso di strstr! #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char str[] = "Tutti a casa, subito!"; char* pch; pch = strstr(str, "casa"); if(pch!= NULL) strncpy(pch, "mare", 4); printf("%s\n", str); return EXIT_SUCCESS; } Pagina 52
53 Leggere stringhe da stream char* fgets(char *s, int n, FILE *stream); fgets legge al più il numero di caratteri n meno uno dallo stream specificato e li memorizza nella stringa s. La lettura termina quando si hanno un carattere di nuova linea, un EOF o un errore. Se qualche carattere è stato letto e non c è errore allora il carattere \0 è inserito alla fine di s. Pagina 53
54 Esempio d uso di fgets! #include<stdio.h> int main(){ char buffer[60]; char * pointer; int i; pointer = fgets(buffer, 60, stdin); if(pointer!=null) printf("%s\n,pointer); stdin indica il puntatore allo stream di input standard. } return 0; Meglio di scanf: possiamo evitare di eccedere la taglia del buffer passato in input Pagina 54
55 Esercizio Si scriva un programma che legga da tastiera una stringa di lunghezza arbitraria terminante con \n e si stampi in output la stringa. Si noti che per limitare lo spreco di memoria si può utilizzare solo un buffer di taglia massima 5 byte per memorizzare i caratteri in input. Pagina 55
56 Parametri in input ad un programma La funzione main può essere dichiarata anche con un prototipo a due argomenti: int main(int argc, char **argv)! Gli argomenti della funzione main indicano 1.un array di stringhe rappresentate mediante array di caratteri argv 2.il numero di elementi dell array argc. Il primo argomento, cioè argv[0], corrisponde al nome del file eseguibile. Pagina 56
57 Esempio: stampa argomenti #include <stdio.h> int main(int argc, char **argv) { int k; for (k = 0; k < argc; k++) printf("%s ", argv[k]); printf("\n"); } Pagina 57
58 Esecuzione >gcc stampaargomenti.c -o stampaargomenti >./stampaargomenti stampaargomenti >./stampaargomenti arg1 arg2 ciao stampaargomenti arg1 arg2 ciao Stringhe - Unità /2013 Pagina 58
Stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliOperazioni sulle stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliCaratteri 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
DettagliUna 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
DettagliEsercizio 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
DettagliSTRINGHE: 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ù
DettagliLinguaggio C - Array. Array: tipo nome_array[num_elementi]
Linguaggio C - Array Array: Gli array o vettori sono delle strutture dati in grado di contenere un insieme di valori tutti dello stesso tipo. Un array lo possiamo immaginare come un contenitore suddiviso
DettagliInformatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi
Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi gianluca.rossi@uniroma2.it Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)
Dettaglichar* titolo= Libreria sulle stringhe Esempi: (strcpy) (strstr)... Laboratorio di Informatica L-A 1
char* titolo= l, e,, s, t, r, i, n, g, h, e, \0 ; 1 Libreria sulle stringhe La libreria string.h contiene una ricca serie di funzioni per operare sulle stringhe Esempi: copiare una stringa in un altra
Dettaglistring.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 \ };
char* titolo= l, e,, s, t, r, i, n, g, h, e, \0 ; Libreria sulle stringhe libreria i string.h contiene una ricca serie di funzioni per operare sulle stringhe Esempi: copiare una stringa in un altra (strcpy
Dettaglis 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
char* titolo= l, e,, s, t, r, i, n, g, h, e, \0 ; 1 Libreria sulle stringhe La libreria string.h contiene una ricca serie di funzioni per operare sulle stringhe Esempi: copiare una stringa in un altra
DettagliLibrerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h
Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comuni di I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int
DettagliLibrerie C. Corso di Linguaggi e Traduttori 1 AA
Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comunidi I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella
Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali
DettagliEsercizi. Stringhe. Stringhe Ricerca binaria
Politecnico di Milano Esercizi Stringhe Stringhe Array di caratteri Funzioni: strcpy() strcmp() strlen() char stringaa[10], stringab[10]; strcpy(stringaa, stringab); Copia if (strcmp(stringaa, stringab)
DettagliI 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
DettagliLezione 5 Sottoarray di somma massima
Lezione 5 Sottoarray di somma massima Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 1 My strcat 1 Esercizio Implementare
DettagliIl blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. Esempio:
Variabili locali Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. void leggivettore(int v[], int dim) int i; /* i E UNA VARIABILE LOCALE */ for (i
DettagliPuntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata
Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione
DettagliStringhe. Concetti chiave
Concetti chiave Stringhe Variabili strutturate: array di caratteri Carattere di fine stringa Copiare, concatenare, confrontare e convertire stringhe Funzioni standard strcpy, strcat, strcat, strcmp, atoi,
DettagliStringhe 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
DettagliUso avanzato dei puntatori Allocazione dinamica della memoria
Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
DettagliEsercitazione 4. Comandi iterativi for, while, do-while
Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti
DettagliGestione di stringhe. Le stringhe in C/C++
Alessio Bechini - Corso di - Gestione di stringhe Parte del materiale proposto è stato gentilmente fornito da G. Lipari Le stringhe in C/C++ In C e in C++ non esiste un vero e proprio tipo stringa. Una
DettagliStringhe e tipi di dati strutturati
Stringhe e tipi di dati strutturati Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 21 Marzo 2013 Info sui Labs http://tinyurl.com/ieimlabextra Ricordate di portare un adattatore!
DettagliLe strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.
Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura
DettagliStringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche
Fondamenti di Informatica T-1 modulo 2 Laboratorio 04: stringhe 1 Stringhe In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche terminatore
DettagliInput/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari
Input/Output Lettura e scrittura Caratteri e Stringhe: Terminale e file Input/output console file caratteri stringhe formattato ascii binari Linguaggio ANSI C Input/Output - 1 La libreria standard del
DettagliIntroduzione al C. Ancora puntatori, allocazione dinamica, e tipi derivati
Introduzione al C Ancora puntatori, allocazione dinamica, e tipi derivati 1 Array di caratteri Non esiste in C un tipo di dato predefinito per le stringhe Le stringhe sono rappresentate come array di caratteri.
DettagliEsercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);
Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di
Dettagli1 MANIPOLAZIONE DI STRINGHE ZERO-TERMINATE
1 MANIPOLAZIONE DI STRINGHE ZERO-TERMINATE 1.1 INTRODUZIONE In informatica una stringa è definita come una sequenza di caratteri, usualmente utilizzata per rappresentare informazioni in formato testuale.
DettagliLezione 6: Funzioni di I/O avanzate
Lezione 6: Funzioni di I/O avanzate Laboratorio di Elementi di Architettura e Sistemi Operativi 11 Aprile 2012 Funzioni avanzate di I/O Il buffer di tastiera I caratteri digitati da tastiera rimangono
DettagliRelativamente agli esempi sopra riportati, al termine dell esecuzione della funzione il file di uscita dovrà contenere quanto riportato a lato.
Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 2 febbraio 2016 Esercizio 1 (16 punti) Un file di testo contiene
Dettaglia.a Codice corso: 21012, 22010
ESERCIZIO 1 Scrivere un sotto-programma in linguaggio C++ che ricevuta una matrice quadrata come parametro restituisca al chiamante un valore booleano indicante se la matrice è simmetrica oppure no. Scrivere
DettagliESERCIZI LEZIONE 7 STRINGHE ED ALLOCAZIONE DINAMICA DELLA MEMORIA
ESERCIZI LEZIONE 7 STRINGHE ED ALLOCAZIONE DINAMICA DELLA MEMORIA 1. Scrivere un programma che permetta di inserire un intero decimale ed una stringa facendo uso di scanf. 2. Scrivere un programma in cui
DettagliIl linguaggio C Puntatori
Il linguaggio C Puntatori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - puntatori 2 Ringraziamenti Questi
DettagliEsercizio 1 (15 punti)
Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 30 giugno 2017 In un lontano paese da
DettagliStringhe. Una stringa è una sequenza di caratteri. Esempi: printf( Sum = %d, s); #define ERR_PREFIX ***** Error -
Stringhe dichiarazione e input/output assegnamento e sottostringhe concatenazione confronto array di puntatori a stringhe input/output, analisi e conversione di caratteri conversione da stringa a numero
DettagliGESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009
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
DettagliIntroduzione al C. Unità Gestione Dinamica della Memoria
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità Gestione Dinamica della Memoria D. Bloisi, A. Pennisi, S. Peluso, S. Salza Gestione
DettagliLibrerie Stringhe. Librerie e stringhe. Lezione 9. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. 2015/2016
e stringhe Lezione 9 Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2015/2016 Calendario delle lezioni Lezione 1 (7 e 9/10/2015) - Introduzione all ambiente Linux Lez. 2 (14 e 16/10/2015)
DettagliCARATTERI E STRINGHE Caratteri e stringhe Funzioni della libreria standard I/O Funzioni della libreria di gestione delle stringhe
CARATTERI E STRINGHE Caratteri e stringhe Funzioni della libreria standard I/O Funzioni della libreria di gestione delle stringhe Caratteri e stringhe Caratteri Sono i blocchi costitutivi di ogni programma:
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori
DettagliPrimi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
DettagliProgrammazione 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
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Funzioni standard del C: Funzioni di I/O Allocazione dinamica della memoria Funzioni su stringhe di caratteri Testo di riferimento B.W. Kernighan & D.M. Ritchie
DettagliIntroduzione al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File D. Bloisi, S. Peluso, A. Pennisi, S. Salza Sommario Input/Output Stream
DettagliDispensa 13 CORSO DI PROGRAMMAZIONE A.A CORSO DI LAUREA IN INGEGNERIA E SCIENZE INFORMATICHE CESENA. Laboratorio
CORSO DI LAUREA IN INGEGNERIA E SCIENZE INFORMATICHE CESENA CORSO DI PROGRAMMAZIONE A.A. 2014-15 Dispensa 13 Laboratorio Dott. Mirko Ravaioli e-mail: mirko.ravaioli@unibo.it http://www.programmazione.info
DettagliLezione 8 Struct e qsort
Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort
DettagliCaratteri 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
DettagliEsercitazione 11. Liste semplici
Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene
DettagliInput/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
DettagliTUTORATO di LINGUAGGI I
TUTORATO di LINGUAGGI I Enrico Vianello TUTORATO di LINGUAGGI I contatti utili LE LEZIONI SI TERRANNO: VENERDI 12.30-14.30 PER INFORMAZIONI e DOMANDE: enrico.vianello@student.unife.it IL MATERIALE UTILIZZATO
DettagliTutorato Programmazione 1 Modulo 2
Tutorato Programmazione 1 Modulo 2 Matrici e Stringhe Do#. Michele Ciampi Esercizi svol5 con standard C99 Matrici Prendere in input una matrice NxN (controllare che N
DettagliERRATA 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
DettagliCaratteri 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
DettagliIntroduzione ai puntatori in C Definizione
Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il
DettagliComplementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -
Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin
DettagliAPPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2013 2014 20.VI.2014
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2013 2014 20.VI.2014 VINCENZO MARRA Indice Esercizio 1 1 Leggere stringhe e caratteri 1 Esercizio 2 2
DettagliGestione delle stringhe in C
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
DettagliSulla libreria standard, III. Manipolare file con stdio.h
Sulla libreria standard, III Manipolare file con stdio.h 1 Libreria per input/output Con libreria si intende una collezione di sottoprogrammi che vengono utilizzati per lo sviluppo di software non eseguibili,
Dettaglifile fisico file logico
I files Un file è una struttura di dati residente su una memoria di massa (file fisico) Un programma vede un file come una sequenza di bytes (file logico) Generalizzando, un file può comprendere qualsiasi
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 26 giugno 2017 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
DettagliEsercizi Array Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliLinguaggi di programmazione + laboratorio a.a. 2012/2013
Linguaggi di programmazione + laboratorio a.a. 2012/2013 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a
DettagliLinguaggio 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
DettagliInformatica B
Informatica B 2016-2017 Esercitazione 8 Array e Stringhe Alessandro A. Nacci alessandro.nacci@polimi.it - www.alessandronacci.it 1 Esercizio 1: stringhe - vocali consecutive Scrivere un programma che data
DettagliLinguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.
Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili
DettagliLe stringhe. Le stringhe
Informatica: C++ Gerboni Roberta Stringhe di caratteri (esempi di utilizzo dei vettori) Nel linguaggio C++ una stringa è semplicemente un vettore di caratteri Vettori di caratteri La stringa "hello" è
DettagliTipi di dato semplici
Tipi di dato semplici Perché dichiarare una variabile? 2 Una variabile rappresenta uno spazio di memoria centrale Prima dell esecuzione del programma deve essere chiaro quanto spazio serve al programma
DettagliRappresentazione binaria delle variabili (int e char)
Rappresentazione binaria delle variabili (int e char) int e char son i due tipi utilizzati dal linguaggio C per la rappresentazione di valori interi; ai valori delle variabili del primo tipo sono assegnati
DettagliVettori di caratteri. Caratteri e stringhe. Stringhe in C. Vettori di caratteri. char saluto[10] ; B u o n g i o r n o 4. Esempio.
Vettori di caratteri Il tipo stringa Terminatore nullo Input/output di stringhe Caratteri e stringhe 2 Stringhe in C Vettori di caratteri Nel linguaggio C non è supportato esplicitamente alcun tipo di
DettagliEsercitazione 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
DettagliEsercizi Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliLaboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014
Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Damiano Macedonio Esercizio 1 Scrivere una funzione che riceve in ingresso un puntatore ad un array di interi e modifica tale array
DettagliFILE: tipo operazione Istruì. prototipo esempi lettura di un carattere fgetc Int fgetc(file *flusso) Vedi sotto
FILE: tipo operazione Istruì. prototipo esempi lettura di un carattere fgetc Int fgetc(file *flusso) Vedi sotto alla volta Scrittura di un fputc Int fputc(int ch, FILE *flusso); carattere alla volta Lettura
DettagliSommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C
Sommario Introduzione... xv Organizzazione del volume... xv Argomenti...xvi Domande...xvi Verifiche...xvi Domande e risposte...xvi Esercizi...xvi Non è richiesta alcuna precedente esperienza di programmazione...
DettagliLinguaggio C: PUNTATORI
Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori
DettagliLaboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011
Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I/O in C Il sistema di I/O del C è una interfaccia uniforme
DettagliSommario FONDAMENTI DI INFORMATICA 1. Il tipo FILE. Passaggio da standard I/O. LINGUAGGIO C Gestione dei file
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
DettagliLinguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
DettagliGestione dinamica della memoria Stringhe File
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Gestione dinamica della memoria Stringhe File Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica
DettagliL accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.
I file L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I canali, sono delle strutture dati che contengono informazioni sul dispositivo fisico,
DettagliDefinizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
DettagliESECUZIONE 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
DettagliLe librerie standard. ! La libreria standard del C è in realtà un insieme di librerie
! La libreria standard del C è in realtà un insieme di librerie! Per usare una libreria, non occorre inse -rirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle! Ogni file sorgente
DettagliDati aggregati. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture
DettagliLe strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.
Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura
DettagliPolitecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri
Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri Fondamenti di Informatica II appello 6 luglio 2015 Matricola/codice persona Cognome Nome Durata prova:
Dettagliprova.c #include <stdio.h> char funzione(char); codice oggetto del main()
prova.c #include char funzione(char); {char c= a ; printf( Ecco il carattere: %c\n,c); c=funzione(c); printf( Ecco il carattere modificato: %c\n,c); char funzione(char tmp) {if(tmp
DettagliEsercitazione 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,
DettagliCorso sul linguaggio C Modulo Tipi di dato
Corso sul linguaggio C Modulo 1 1.3 - Tipi di dato 1 Prerequisiti Concetto di espressione Cenni sulla struttura del calcolatore 2 1 Introduzione In questa lezione si esaminano i tipi di dato. I tipi di
DettagliLIBRERIE 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
DettagliLaboratorio di Elementi di Architetture e Sistemi Operativi Esercizi del 18 Aprile 2012
Laboratorio di Elementi di Architetture e Sistemi Operativi Esercizi del 18 Aprile 2012 Esercizio 1. Modificare l Esercizio 3 della lezione scorsa (occorrenze di ogni lettera dell alfabeto) in modo che
Dettagligiapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL
Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie
DettagliEsercizi proposti. Caratteri e stringhe. Esercizio Parola palindroma. Esercizi proposti. Palindromia. Analisi. o t t o. m a d a m
Esercizio Parola palindroma Esercizio Iniziali maiuscole Esercizio Alfabeto farfallino Caratteri e stringhe 2 Esercizio Parola palindroma Sia data una parola inserita da tastiera. Si consideri che la parola
Dettagli5 Stringhe. Esiste una libreria di C che gestisce le stringhe string.h essa ci permette di:
Le stringhe di caratteri sono gestite in C come dei vettori di char con alla fine un tappo dato dal carattere \0. E possibile acquisire un intera stringa di caratteri in una sola istruzione grazie all
DettagliStringhe in C. Alessandra Giordani Lunedì 23 aprile 2012
Stringhe in C Alessandra Giordani agiordani@disi.unitn.it Lunedì 23 aprile 2012 http://disi.unitn.it/~agiordani/ Stringhe Sono particolari array: Ogni elemento del vettore è di tipo char La stringa è terminata
DettagliEsempio di Prova Scritta
Esempio di Prova Scritta La prova scritta è composta da alcuni esercizi per un totale di 10 punti (durata:circa 1h15 ). Le tipologie di esercizi possibili comprendono:! sintesi di una funzione ricorsiva/iterativa,
DettagliInput / Output, Espressioni Condizionali e Cicli
LIA - DEIS - Facoltà di Ingegneria - Università di Bologna Laboratorio di informatica LA Corso di laurea in Ingegneria Informatica - Anno Accademico 2007-2008 Input / Output, Espressioni Condizionali e
Dettagli