Stringhe di caratteri
|
|
- Pietro Fortunato
- 5 anni fa
- Visualizzazioni
Transcript
1 Stringhe di caratteri 1
2 Rappresentazione Sommario Dichiarazione Indice di un carattere in una stringa Operazione su stringhe Errori comuni 2
3 Rappresentazione Ricorda: In memoria le celle di un array sono contigue ogni cella ha un indirizzo 0x1FFE 0x1FFF 0x2000 0x2001 0x2002 etc 3
4 Rappresentazione Ricorda: Nella dichiarazione una variabile è un contenitore di un valore Esempio char ch; ch = B ; 0x1FFE 0x1FFF 0x2000 0x2001 0x2002 B ch etc 4
5 Rappresentazione Dichiarazione di una stringa individua un array di celle ogni cella contiene un char fornisce l indirizzo della prima cella Esempio char name[5]; Specifica il numero di celle dell array 5
6 Rappresentazione Dichiarazione di una stringa individua un array di celle ogni cella contiene un char fornisce l indirizzo della prima cella Esempio char name[5]; name è 0x2000 0x2000 0x2004 6
7 Array e stringhe di caratteri Una stringa di caratteri è un array di char Una stringa di caratteri deve avere il carattere terminale ( \0 ) Il carattere terminale permette a scanf() e printf() di manipolare le stringhe efficacemente 7
8 Stringhe di caratteri Dichiarazione char name[5]; Dichiarazione #define MAXLENGTH 5 char name[maxlength]; name è 0x2000 0x2000 0x2004 8
9 Input/Output di stringhe #include <stdio.h> #define MAXLENGTH 15 Non serve &, il nome stesso individua l indirizzo int main() { char string1[maxlength]; char string2[maxlength]; scanf("%s %s", string1, string2); printf("%s %s\n", string1, string2); } return 0; 9
10 Dichiarazione di stringhe Dichiarazione char name[5] = Ann ; Carattere terminale \0, segna il fine-stringa name è 0x2000 0x2000 A n n \0 0x
11 Dichiarazione di stringhe Dichiarazione Al più 4 lettere, l ultima deve essere \0 char name[5] = Ann ; name è 0x2000 A n n \0 0x2000 0x
12 Dichiarazione di stringhe Dichiarazione char name[] = Ann ; Usa una cella extra per \0 name è 0x2000 0x2000 A n n \0 0x
13 Dichiarazione di stringhe Dichiarazione char *name = Ann ; Se si prova a modificare questa stringa, il risultato è segmentation fault 0x3000 name A n n \0 0x3000 0x
14 Dichiarazione di stringhe Dichiarazione char name[]; Stringa di lunghezza arbitraria? No, errore! 14
15 Un carattere in una stringa La dimensione di una stringa di caratteri è fissata Per raggiungere il carattere alla posizione indice, l (indice+1)-esimo carattere: string[indice] Il primo carattere ha indice 0 15
16 Un carattere in una stringa 0x3995 0x399C name è 0x3995 J o h n \0 indice 0 indice 4 char name[8] = John ; int i = 2; printf( Il carattere in posizione %d è %c.\n, i, name[i]); output: Il carattere in posizione 2 è h. 16
17 Un carattere in una stringa 0x3995 0x399C name è 0x3995 J o hx n \0 indice 2 char name[8] = John ; name[2] = X ; printf( Nome: %s\n, name); 17
18 Un carattere in una stringa 0x3995 0x399C name è 0x3995 J o X n \0 indice 2 char name[8] = John ; name[2] = X ; printf( Nome: %s\n, name); output: Nome: JoXn 18
19 Operazioni con le stringhe #include <string.h> Assegnamento: strcpy() Concatenazione: strcat() Confronto: strcmp() Lunghezza: strlen() 19
20 #include <stdio.h> #include <string.h> #define MAXLENGTH 100 Assegnamento int main() { char string1[maxlength]; char string2[maxlength]; strcpy(string1, Hello World! ); strcpy(string2, string1); } return 0; string1: <spazzatura> string2: <spazzatura> 20
21 Assegnamento #include <stdio.h> #include <string.h> #define MAXLENGTH 100 int main() { char string1[maxlength]; char string2[maxlength]; strcpy(string1, Hello World! ); strcpy(string2, string1); } return 0; string1: Hello World! string2: <spazzatura> 21
22 Assegnamento #include <stdio.h> #include <string.h> #define MAXLENGTH 100 int main() { char string1[maxlength]; char string2[maxlength]; strcpy(string1, Hello World! ); strcpy(string2, string1); } return 0; string1: Hello World! string2: Hello World! 22
23 Esempio char name1[5] = Ann ; char name2[5] = Dave ; name2 = name1; Errori Comuni Utilizzo del nome di stringa come Lvalue (variabile di tipo indirizzo) Errore! Richiesta una Lvalue-expression! - name2 contiene l indirizzo del primo valore dell array ma non è una variabile di tipo indirizzo 23
24 Esempio Errori Comuni Utilizzo del nome di stringa come Lvalue (variabile di tipo indirizzo) char name1[5] = Ann ; char name2[5] = Dave ; &(name2[0]) = name1; Errore! Richiesta una Lvalue-expression! - &(name2[0]) restituisce l indirizzo del primo valore dell array ma non è una variabile di tipo indirizzo 24
25 Attenzione Assegnamento di indirizzo Esempio char *name1 = Ann ; char *name2 = Dave ; name2 = name1; 25
26 Attenzione Assegnamento di indirizzo char *name1 = Ann ; char *name2 = Dave ; 0x2000 name1 A n n \0 0x2000 0x2003 0x3990 name2 D a v e \0 0x3990 0x
27 Attenzione Assegnamento di indirizzo name2 = name1; 0x2000 name1 A n n \0 0x2000 0x2003 0x2000 name2 D a v e \0 0x3990 0x
28 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye string2:, Cruel 28
29 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye, Cruel string2:, Cruel 29
30 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye, Cruel, Cruel string2:, Cruel 30
31 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye, Cruel, Cruel World! string2:, Cruel 31
32 Errori Comuni Spazio insufficente char name[] = Ann ; strcpy(name, David ); name è 0x2000 A n n \0 0x2000 0x
33 Errori Comuni Spazio insufficente char name[] = Ann ; strcpy(name, David ); name è 0x2000 D a v i d \0 0x2000 0x
34 Errore tipico Spazio insufficente char name[5]; strcpy(name, David ); Non dimenticare il carattere \0 name è 0x3990 D a v i d \0 0x3990 0x
35 Errori Comuni Spazio insufficente char name[5]; strcpy(name, Ann ); strcat(name, Smith ); name è 0x2000 A n n \0 0x2000 0x
36 Errori Comuni Spazio insufficente char name[5]; Ma in pratica? Vediamo cosa succede.. strcpy(name, Ann ); strcat(name, Smith ); name è 0x2000 A n n S m i t h \0 0x2000 0x
37 Esempio: strassign.c #include <stdio.h> #include <string.h> #define MAXLENGTH 5 int main() { char name1[maxlength] = Ann ; char name2[] = Ann ; char *name3 = John ; char name4[maxlength]; } PRIMA name1=ann name2=ann name3=john printf( \nprima\nname1=%s\nname2=%s\nname3=%s, name1, name2, name3); strcpy(name1, Fred ); strcpy(name2, Fred ); strcpy(name4,name1); name3 = name2; printf( \ndopo\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); strcat(name1, Lee ); strcpy(name2, Jim ); printf( \ninfine\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); return 0; 37
38 Esempio: strassign.c #include <stdio.h> #include <string.h> #define MAXLENGTH 5 int main() { char name1[maxlength] = Ann ; char name2[] = Ann ; char *name3 = John ; char name4[maxlength]; } DOPO name1=fred name2=fred name3=fred name4=fred printf( \nprima\nname1=%s\nname2=%s\nname3=%s, name1, name2, name3); strcpy(name1, Fred ); strcpy(name2, Fred ); strcpy(name4,name1); name3 = name2; printf( \ndopo\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); strcat(name1, Lee ); strcpy(name2, Jim ); printf( \ninfine\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); return 0; 38
39 Esempio: strassign.c #include <stdio.h> #include <string.h> #define MAXLENGTH 5 int main() { char name1[maxlength] = Ann ; char name2[] = Ann ; char *name3 = John ; char name4[maxlength]; } INFINE name1=fred Lee name2=jim name3=jim name4=fred printf( \nprima\nname1=%s\nname2=%s\nname3=%s, name1, name2, name3); strcpy(name1, Fred ); strcpy(name2, Fred ); strcpy(name4,name1); name3 = name2; printf( \ndopo\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); strcat(name1, Lee ); strcpy(name2, Jim ); printf( \ninfine\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); return 0; 39
40 Confronto strcpy(string1, Apple ); strcpy(string2, Wax ); if (strcmp(string1, string2) < 0) { printf( %s %s\n, string1, string2); } else { printf( %s %s\n, string2, string1); } Restituisce La differenza tra i codici ASCII dei caratteri (presi a due a due) delle due stringhe nello stesso ordine in cui vengono scritte; alla prima differenza non nulla, ritornano tale valore 40
41 Confronto strcpy(string1, Apple ); strcpy(string2, Wax ); if (strcmp(string1, string2) < 0) { printf( %s %s\n, string1, string2); } else { printf( %s %s\n, string2, string1); } output: Apple Wax 41
42 Errore tipico Confronto errato strcpy(string1, Apple ); strcpy(string2, Wax ); if (string1 < string2) { printf( %s %s\n, string1, string2); } else { printf( %s %s\n, string2, string1); } 42
43 Lunghezza char string1[100]; strcpy(string1, Apple ); printf( %d\n, strlen(string1)); output: 5 43
44 Stringhe di caratteri come parametri Le stringhe come parametri formali sono dichiarate char* o char[] Esempi: void Greet ( char* name ) void Greet ( char name[] ) In tutto e per tutto sono vettori! 44
45 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { } strcat(name, "! Come va?"); int main() { char user[namelen]; } printf( Chi sei? "); scanf("%s", user); Greet(user); printf("%s\n", user); return 0; user è Jake\0 45
46 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { } strcat(name, "! Come va?"); int main() { char user[namelen]; } printf("who are you? "); scanf("%s", user); Greet(user); printf("%s\n", user); return 0; name punta user è Jake\0 46
47 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { } strcat(name, "! Come va?"); int main() { char user[namelen]; } printf("who are you? "); scanf("%s", user); Greet(user); printf("%s\n", user); return 0; name punta user è Jake! Come va?\0 47
48 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { } strcat(name, "! Come va?"); int main() { char user[namelen]; printf("who are you? "); scanf("%s", user); Greet(user); printf("%s\n", user); } return 0; user è Jake! Come va?\0 48
49 Sommario Una stringa è un array continuo di caratteri L identificatore di stringa è l indirizzo stesso del primo carattere della stringa Ogni singolo carattere è individuato usando la notazione tipica ad array nome-stringa[indice] Esistono librerie C standard per copiare, concatenare e confrontare le stringhe 49
50 Deitel & Deitel Capitolo 8:
51 Stringhe di caratteri 10/08/06 1
52 CSE1301 Sem Sommario Rappresentazione Dichiarazione Indice di un carattere in una stringa Operazione su stringhe Errori comuni 10/08/06 2 Lecture 20: Character Strings 2
53 08/10/06 Rappresentazione Ricorda: In memoria le celle di un array sono contigue ogni cella ha un indirizzo 0x1FFE 0x1FFF 0x2000 0x2001 0x2002 etc 10/08/06 3
54 08/10/06 Rappresentazione Ricorda: Nella dichiarazione una variabile è un contenitore di un valore Esempio char ch; ch = B ; 0x1FFE 0x1FFF 0x2000 0x2001 0x2002 B 10/08/06 ch 4 etc
55 08/10/06 Rappresentazione Dichiarazione di una stringa individua un array di celle ogni cella contiene un char fornisce l indirizzo della prima cella Esempio char name[5]; Specifica il numero di celle dell array 10/08/06 5
56 08/10/06 Rappresentazione Dichiarazione di una stringa individua un array di celle ogni cella contiene un char fornisce l indirizzo della prima cella Esempio char name[5]; name è 0x2000 0x2000 0x /08/06 6
57 CSE1301 Sem Array e stringhe di caratteri Una stringa di caratteri è un array di char Una stringa di caratteri deve avere il carattere terminale ( \0 ) Il carattere terminale permette a scanf() e printf() di manipolare le stringhe efficacemente 10/08/06 7 Lecture 20: Character Strings 7
58 08/10/06 Stringhe di caratteri Dichiarazione char name[5]; Dichiarazione #define MAXLENGTH 5 char name[maxlength]; name è 0x2000 0x2000 0x /08/06 8
59 08/10/06 Input/Output di stringhe #include <stdio.h> #define MAXLENGTH 15 Non serve &, il nome stesso individua l indirizzo int main() { char string1[maxlength]; char string2[maxlength]; scanf("%s %s", string1, string2); printf("%s %s\n", string1, string2); } return 0; 10/08/06 9
60 08/10/06 Dichiarazione di stringhe Dichiarazione char name[5] = Ann ; Carattere terminale \0, segna il fine-stringa name è 0x2000 0x2000 A n n \0 0x /08/06 10
61 08/10/06 Dichiarazione di stringhe Dichiarazione Al più 4 lettere, l ultima deve essere \0 char name[5] = Ann ; name è 0x2000 A n n \0 0x2000 0x /08/06 11
62 08/10/06 Dichiarazione di stringhe Dichiarazione char name[] = Ann ; Usa una cella extra per \0 name è 0x2000 0x2000 A n n \0 0x /08/06 12
63 CSE1301 Sem Dichiarazione di stringhe Dichiarazione char *name = Ann ; Se si prova a modificare questa stringa, il risultato è segmentation fault 0x3000 name A n n \0 0x3000 0x /08/06 13 Lecture 20: Character Strings 13
64 08/10/06 Dichiarazione di stringhe Dichiarazione char name[]; Stringa di lunghezza arbitraria? No, errore! 10/08/06 14
65 08/10/06 Un carattere in una stringa La dimensione di una stringa di caratteri è fissata Per raggiungere il carattere alla posizione indice, l (indice+1)-esimo carattere: string[indice] Il primo carattere ha indice 0 10/08/06 15
66 08/10/06 Un carattere in una stringa 0x3995 0x399C name è 0x3995 J o h n \0 indice 0 indice 4 char name[8] = John ; int i = 2; printf( Il carattere in posizione %d è %c.\n, i, name[i]); output: Il carattere in posizione 2 è h. 10/08/06 16
67 08/10/06 Un carattere in una stringa 0x3995 0x399C name è 0x3995 J o hx n \0 indice 2 char name[8] = John ; name[2] = X ; printf( Nome: %s\n, name); 10/08/06 17
68 08/10/06 Un carattere in una stringa 0x3995 0x399C name è 0x3995 J o X n \0 indice 2 char name[8] = John ; name[2] = X ; printf( Nome: %s\n, name); output: Nome: JoXn 10/08/06 18
69 08/10/06 Operazioni con le stringhe #include <string.h> Assegnamento: strcpy() Concatenazione: strcat() Confronto: strcmp() Lunghezza: strlen() 10/08/06 19
70 08/10/06 Assegnamento #include <stdio.h> #include <string.h> #define MAXLENGTH 100 int main() { char string1[maxlength]; char string2[maxlength]; strcpy(string1, Hello World! ); strcpy(string2, string1); } return 0; string1: <spazzatura> string2: <spazzatura> 10/08/06 20
71 08/10/06 Assegnamento #include <stdio.h> #include <string.h> #define MAXLENGTH 100 int main() { char string1[maxlength]; char string2[maxlength]; strcpy(string1, Hello World! ); strcpy(string2, string1); } return 0; string1: Hello World! string2: <spazzatura> 10/08/06 21
72 08/10/06 Assegnamento #include <stdio.h> #include <string.h> #define MAXLENGTH 100 int main() { char string1[maxlength]; char string2[maxlength]; strcpy(string1, Hello World! ); strcpy(string2, string1); } return 0; string1: Hello World! string2: Hello World! 10/08/06 22
73 CSE1301 Sem Esempio char name1[5] = Ann ; char name2[5] = Dave ; name2 = name1; Errori Comuni Utilizzo del nome di stringa come Lvalue (variabile di tipo indirizzo) Errore! Richiesta una Lvalue-expression! - name2 contiene l indirizzo del primo valore dell array ma non è una variabile di tipo indirizzo 10/08/06 23 Lecture 20: Character Strings 23
74 CSE1301 Sem Esempio Errori Comuni Utilizzo del nome di stringa come Lvalue (variabile di tipo indirizzo) char name1[5] = Ann ; char name2[5] = Dave ; &(name2[0]) = name1; Errore! Richiesta una Lvalue-expression! - &(name2[0]) restituisce l indirizzo del primo valore dell array ma non è una variabile di tipo indirizzo 10/08/06 24 Lecture 20: Character Strings 24
75 08/10/06 Attenzione Assegnamento di indirizzo Esempio char *name1 = Ann ; char *name2 = Dave ; name2 = name1; 10/08/06 25
76 08/10/06 Attenzione Assegnamento di indirizzo char *name1 = Ann ; char *name2 = Dave ; 0x2000 name1 A n n \0 0x2000 0x2003 0x3990 name2 D a v e \0 0x3990 0x /08/06 26
77 08/10/06 Attenzione Assegnamento di indirizzo name2 = name1; 0x2000 name1 A n n \0 0x2000 0x2003 0x2000 name2 D a v e \0 0x3990 0x /08/06 27
78 08/10/06 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye string2:, Cruel 10/08/06 28
79 08/10/06 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye, Cruel string2:, Cruel 10/08/06 29
80 08/10/06 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye, Cruel, Cruel string2:, Cruel 10/08/06 30
81 08/10/06 Concatenazione char string1[maxlength]; char string2[maxlength]; strcpy(string1, Goodbye ); strcpy(string2,, Cruel ); strcat(string1, string2); strcat(string1, string2); strcat(string1, World! ); string1: Goodbye, Cruel, Cruel World! string2:, Cruel 10/08/06 31
82 08/10/06 Errori Comuni Spazio insufficente char name[] = Ann ; strcpy(name, David ); name è 0x2000 A n n \0 0x2000 0x /08/06 32
83 08/10/06 Errori Comuni Spazio insufficente char name[] = Ann ; strcpy(name, David ); name è 0x2000 D a v i d \0 0x2000 0x /08/06 33
84 08/10/06 Errore tipico Spazio insufficente char name[5]; strcpy(name, David ); Non dimenticare il carattere \0 name è 0x3990 D a v i d \0 0x3990 0x /08/06 34
85 08/10/06 Errori Comuni Spazio insufficente char name[5]; strcpy(name, Ann ); strcat(name, Smith ); name è 0x2000 A n n \0 0x2000 0x /08/06 35
86 08/10/06 Errori Comuni Spazio insufficente char name[5]; Ma in pratica? Vediamo cosa succede.. strcpy(name, Ann ); strcat(name, Smith ); name è 0x2000 A n n S m i t h \0 0x2000 0x /08/06 36
87 CSE1301 Sem Esempio: strassign.c #include <stdio.h> #include <string.h> #define MAXLENGTH 5 int main() { char name1[maxlength] = Ann ; char name2[] = Ann ; char *name3 = John ; char name4[maxlength]; } PRIMA name1=ann name2=ann name3=john printf( \nprima\nname1=%s\nname2=%s\nname3=%s, name1, name2, name3); strcpy(name1, Fred ); strcpy(name2, Fred ); strcpy(name4,name1); name3 = name2; printf( \ndopo\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); strcat(name1, Lee ); strcpy(name2, Jim ); printf( \ninfine\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); return 0; 10/08/06 37 Lecture 20: Character Strings 37
88 CSE1301 Sem Esempio: strassign.c #include <stdio.h> #include <string.h> #define MAXLENGTH 5 int main() { char name1[maxlength] = Ann ; char name2[] = Ann ; char *name3 = John ; char name4[maxlength]; } DOPO name1=fred name2=fred name3=fred name4=fred printf( \nprima\nname1=%s\nname2=%s\nname3=%s, name1, name2, name3); strcpy(name1, Fred ); strcpy(name2, Fred ); strcpy(name4,name1); name3 = name2; printf( \ndopo\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); strcat(name1, Lee ); strcpy(name2, Jim ); printf( \ninfine\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); return 0; 10/08/06 38 Lecture 20: Character Strings 38
89 CSE1301 Sem Esempio: strassign.c #include <stdio.h> #include <string.h> #define MAXLENGTH 5 int main() { char name1[maxlength] = Ann ; char name2[] = Ann ; char *name3 = John ; char name4[maxlength]; } INFINE name1=fred Lee name2=jim name3=jim name4=fred printf( \nprima\nname1=%s\nname2=%s\nname3=%s, name1, name2, name3); strcpy(name1, Fred ); strcpy(name2, Fred ); strcpy(name4,name1); name3 = name2; printf( \ndopo\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); strcat(name1, Lee ); strcpy(name2, Jim ); printf( \ninfine\nname1=%s\nname2=%s\nname3=%s\nname4=%s, name1, name2, name3, name4); return 0; 10/08/06 39 Lecture 20: Character Strings 39
90 08/10/06 Confronto strcpy(string1, Apple ); strcpy(string2, Wax ); if (strcmp(string1, string2) < 0) { printf( %s %s\n, string1, string2); } else { printf( %s %s\n, string2, string1); } Restituisce La differenza tra i codici ASCII dei caratteri (presi a due a due) delle due stringhe nello stesso ordine in cui vengono scritte; alla prima differenza non nulla, ritornano tale valore 10/08/06 40
91 08/10/06 Confronto strcpy(string1, Apple ); strcpy(string2, Wax ); if (strcmp(string1, string2) < 0) { printf( %s %s\n, string1, string2); } else { printf( %s %s\n, string2, string1); } output: Apple Wax 10/08/06 41
92 08/10/06 Errore tipico Confronto errato strcpy(string1, Apple ); strcpy(string2, Wax ); if (string1 < string2) { printf( %s %s\n, string1, string2); } else { printf( %s %s\n, string2, string1); } 10/08/06 42
93 08/10/06 Lunghezza char string1[100]; strcpy(string1, Apple ); printf( %d\n, strlen(string1)); output: 5 10/08/06 43
94 CSE1301 Sem Stringhe di caratteri come parametri Le stringhe come parametri formali sono dichiarate char* o char[] Esempi: void Greet ( char* name ) void Greet ( char name[] ) In tutto e per tutto sono vettori! 10/08/06 44 Lecture 20: Character Strings 44
95 08/10/06 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { strcat(name, "! Come va?"); } int main() { char user[namelen]; } printf( Chi sei? "); scanf("%s", user); Greet(user); printf("%s\n", user); return 0; user è Jake\0 10/08/06 45
96 08/10/06 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { strcat(name, "! Come va?"); } int main() { char user[namelen]; } printf("who are you? "); scanf("%s", user); Greet(user); printf("%s\n", user); return 0; name punta user è Jake\0 10/08/06 46
97 08/10/06 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { strcat(name, "! Come va?"); } int main() { char user[namelen]; } printf("who are you? "); scanf("%s", user); Greet(user); printf("%s\n", user); return 0; name punta user è Jake! Come va?\0 10/08/06 47
98 08/10/06 Example: hello3.c #include <stdio.h> #include <string.h> #define NAMELEN 50 /* Stampa un saluto */ void Greet ( char * name ) { strcat(name, "! Come va?"); } int main() { char user[namelen]; } printf("who are you? "); scanf("%s", user); Greet(user); printf("%s\n", user); return 0; user è Jake! Come va?\0 10/08/06 48
99 08/10/06 Sommario Una stringa è un array continuo di caratteri L identificatore di stringa è l indirizzo stesso del primo carattere della stringa Ogni singolo carattere è individuato usando la notazione tipica ad array nome-stringa[indice] Esistono librerie C standard per copiare, concatenare e confrontare le stringhe 10/08/06 49
100 08/10/06 Deitel & Deitel Capitolo 8: /08/06 50
A. Ferrari. stringhe di caratteri In linguaggio C
stringhe di caratteri In linguaggio C stringhe o un insieme di caratteri in sequenza forma una stringa o alcuni linguaggi definiscono per le stringhe uno specifico tipo di dato e offrono metodi specifici
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,
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
DettagliEsercitazione di Reti degli elaboratori
Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione
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
DettagliRIPRENDIAMO I PUNTATORI
RIPRENDIAMO I PUNTATORI Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 =&a Esistono in C particolari variabili dette
DettagliC: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
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ù
DettagliLezione XI Le stringhe
Programmazione e Laboratorio di Programmazione Lezione XI Le stringhe Programmazione e Laboratorio di Programmazione: Le stringhe 1 Premessa: Il tipo char Dimensione: 1 byte Range: da 0 a 255 Definizione:
DettagliStringhe 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
DettagliStrutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici.
Operatori di incremento e decremento ++ e -- Esempi y=x++ il contenuto della variabile x viene inizialmente usata per l assegnazione y, e solo dopo incrementata y=--x il contenuto della variabile x viene
DettagliLezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe
Lezione 19 e 20 - Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Valentina Ciriani (2005-2008) Laboratorio di programmazione Valentina Ciriani
DettagliLinguaggio C: Stringhe Valeria Cardellini
Linguaggio C: Stringhe Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Argomenti q
DettagliIntroduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017
DettagliLinguaggio C - Stringhe
ISTITUTO SECONDARIO DI ISTRUZIONE SUPERIORE "Guido Tassinari" di POZZUOLI Informatica Prof. A.S. 2011/2012 Linguaggio C - Stringhe 27/04/2012 Array di caratteri Una stringa è: Un array di caratteri Termina
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
DettagliELEMENTI DI INFORMATICA. Linguaggio C
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica ELEMENTI DI INFORMATICA http://agile.diee.unica.it A.A. 2015/2016 Ing. Marco Ortu Diee, secondo piano Tel. 070-6755774 mail:
DettagliLezione 8: Stringhe ed array multidimensionali
Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si
DettagliSTRINGHE: ARRAY DI CARATTERI STRINGHE: 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ù N-1
DettagliPuntatori e array. Violetta Lonati
Puntatori e array Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Puntatori e array
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
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
DettagliStringhe. Unità 8. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
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
DettagliLinguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin
Linguaggio C Vettori, Puntatori e Funzioni Stringhe Università degli Studi di Brescia Prof. Massimiliano Giacomin SCHEMA DELLA LEZIONE RELAZIONE TRA VETTORI E PUNTATORI (e le stringhe letterali come caso
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
DettagliIntroduzione al C. Unità 8 Stringhe. S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 8 Stringhe S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi Sommario
DettagliLe stringhe. Le stringhe sono sequenze di caratteri,
Stringhe Le stringhe Le stringhe sono sequenze di caratteri, in C le stringhe costanti vengono denotate da una successione di caratteri racchiusa fra apici Es: "ciccio" "n = %d" "Ciao Mondo" La rappresentazione
DettagliIntroduzione al C. Unità 8 Stringhe
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 Sommario Unità 8 Array di
DettagliLe stringhe. Le stringhe sono sequenze di caratteri,
Stringhe Le stringhe Le stringhe sono sequenze di caratteri, in C le stringhe costanti vengono denotate da una successione di caratteri racchiusa fra apici Es: "ciccio" "n = %d" "Ciao Mondo" La rappresentazione
Dettaglisoldi soldi, int, char, float char, int, float, double char: int float: double: float int char signed unsigned short int long int double Unità di Elaborazione (CPU) unsigned int Pippo long int Pluto
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!
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)
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/ Copyright Mirko Viroli Copyright 2016 2018 Moreno
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
Dettagliint, char, float.. int, char, float.. - char, int, float, double char: int float: double: float int char signed unsigned short int long int double int Pippo; unsigned int Pippo; long int Pippo; long int
Dettaglisoldi soldi, int, char, float.. int, char, float.. - char, int, float, double char: int float: double: float int char signed unsigned short int long int double int Pippo; unsigned int Pippo; long int
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
DettagliTipi di dato STRUTTURATI
Tipi di dato STRUTTURATI I tipi di dato si differenziano in scalari e strutturati In C si possono definire tipi strutturati: array e strutture [ ] (array) Un array è una collezione finita di N variabili
DettagliIntroduzione al C. Lezione 4 Allocazione dinamica della memoria. Rossano Venturini. Pagina web del corso
Introduzione al C Lezione 4 Allocazione dinamica della memoria Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Lezioni di ripasso
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à 8 Stringhe. D. Bloisi, S. Peluso, A. Pennisi, S. Salza
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 8 Stringhe D. Bloisi, S. Peluso, A. Pennisi, S. Salza Sommario Unità 8 Array di
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
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
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)
DettagliDichiarazioni e tipi predefiniti nel linguaggio C
Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo. Premessa Programmi provati sul compilatore Borland C++ 1.0 Altri compilatori:
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. Prof. Lorenzo Porcelli
Stringhe Prof. Lorenzo Porcelli definizione Una stringa è un vettore di caratteri terminato dal carattere nullo \0. Il carattere nullo finale permette di determinare la lunghezza della stringa. char vet[32];
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
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
DettagliMEMORIA DINAMICA. & Indirizzo * Contenuto. 1. Puntatori. Nozioni base sull uso dei puntatori: Operatori & * In sintesi : /* Definizine variabili */
MEMORIA DINAMICA 1. Puntatori Nozioni base sull uso dei puntatori: Operatori & * ES /* Definizine variabili */ int x, y; /* Variabili intere */ int *px; /* Puntatore a intero */ x = 10; /* Assegno 10 a
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
DettagliAritmetica dei puntatori
Aritmetica dei puntatori Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 7 dicembre 2016 sizeof L operatore
DettagliIl linguaggio C Gestione della memoria
Il linguaggio C Gestione della memoria Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - Gestione della memoria
DettagliAnche se due variabili vettore sono dello stesso tipo, NON è possibile l assegnamento diretto:
ESERCIZIO: Lettura/Scrittura Array Non è possibile leggere/scrivere un intero vettore con un unica operazione (a parte il caso particolare delle stringhe); occorre leggere/scrivere ognuno dei suoi componenti
DettagliESERCIZIO: Lettura/Scrittura Array
ESERCIZIO: Lettura/Scrittura Array Non è possibile leggere/scrivere un intero vettore con un unica operazione (a parte il caso particolare delle stringhe); occorre leggere/scrivere ognuno dei suoi componenti
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
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
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
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliProgrammazione in C. La struttura del programma Variabili, espressioni, operazioni
Programmazione in C La struttura del programma Variabili, espressioni, operazioni Struttura del programma // Area quadrato circoscritto // circonferenza /* Author: Lorenzo Course: info */ #include
DettagliIntroduzione al linguaggio C Dati aggregati
Introduzione al linguaggio C Dati aggregati Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 5 ottobre
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
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
DettagliFunzioni con numero variabile di parametri: Funzioni Variadiche in C. Massimo Benerecetti Laboratorio di Algoritmi e Strutture Dati
Funzioni con numero variabile di parametri: Funzioni Variadiche in C Massimo Benerecetti Laboratorio di Algoritmi e Strutture Dati Funzioni «variadiche» Le funzioni che ricevono un numero variabile di
DettagliAllocazione dinamica memoria
Allocazione dinamica memoria Marco Casazza 11/12/2017 1 Esercizio 1 1 /* 2 Creare una lista bidirezionale di interi, ovvero una lista 3 che permette lo scorrimento in entrambe le direzioni ( dal primo
DettagliRipasso R1. Dati strutturati. Esempi. Array. Dichiarazione di un array. Dichiarazione di un array in C
Ripasso R1 Dati strutturati Aggregazione di dati omogenei: gli array Spesso gli algoritmi lavorano su insiemi di dati omogenei. o l insieme dei valori reali che rappresentano le temperature medie delle
DettagliDIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 20 Aprile 2016
Puntatori Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 20 Aprile 2016 Come rappresento un pixel? Il pixel è Il colore Come ottengo il verde? Con il formato RGB R: 91 G: 191 B:
DettagliEsercitazione 2. Variabili e Tipi Input e Output Assegnamenti Il comando if-else
Esercitazione 2 Variabili e Tipi Input e Output Assegnamenti Il comando if-else Espressioni aritmetiche /* Scrivere un programma che calcola l area e la circonferenza di un cerchio di raggio 20 cm */ #include
DettagliEsercizi sulle stringhe
Esercizi sulle stringhe Esercizio 1 La cifratura è un processo di sostituzione, permutazione manuale ed automatica di simboli. Lo scopo di un criptosistema è di cifrare un testo intellegibile (in chiaro)
DettagliAlcuni Richiami sul C
Alcuni Richiami sul C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno richiamati
DettagliProgrammazione I (Classe 1)
Programmazione I (Classe 1) Secondo appello (prima prova) 14 Luglio 2016 Docenti: De Prisco - Deufemia - Zizza Cognome: Nome: Matricola: Ritirato 1 Esercizi (leggere attentamente il testo prima di scrivere
DettagliIntroduzione al C. Lez. 1 Elementi. Rossano Venturini
Introduzione al C Lez. 1 Elementi Rossano Venturini rossano@di.unipi.it Pagine del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start http://algoritmica.spox.spoj.pl/alglab2013 Lezioni
DettagliArray. Definizione e utilizzo di vettori
Array Definizione e utilizzo di vettori Array (1/2) Un array o vettore rappresenta un insieme di elementi dello stesso tipo. Sintassi per la creazione di un array: tipo_elementi[] nome; nome = new tipo_elementi[numero_elementi];
Dettagliottenere la lunghezza di una stringa con la funzione strlen(stringa); Esercizio 5.1
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
DettagliEsercizio 1: calcolo insieme intersezione
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 3 Esercitazione: 19 ottobre 2005 Esercizi su array e matrici Esercizio 1: calcolo insieme intersezione Problema: *******************************************************************
DettagliArray. Aggragati di variabili omogenee...
Array Aggragati di variabili omogenee... Cosa è un array È un insieme di variabili omogenee identificato da un indice, ad esempio Se devo leggere 1 numeri dallo standard input e memorizzarli all'interno
DettagliOgni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
DettagliIntroduzione al C. Lez. 2 Funzioni e Puntatori
Introduzione al C Lez 2 Funzioni e Puntatori Esercizio 1: test primalità Scrivere un programma che prenda in input un intero n, e stampa SI se n è primo, NO altrimenti (NB: un intero n è primo se e solo
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliLinguaggio C - Stringhe
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - Stringhe La presente dispensa e da utilizzarsi ai
DettagliEsercizi. La funzione swapint() primo tentativo
Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include
DettagliGli array. slides credit M. Poneti
Gli array slides credit M. Poneti Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome e lo
DettagliEsercitazione 3 - Note
Esercitazione 3 - Note Ing. Michele Scandale 18-10-2012 Il materiale illustrato a lezione e in queste note contiene anche esempi di Giacomo Boracchi, Luigi Cardamone, Nicola Basilico e Nicola Vitucci.
DettagliStruttura dei programmi e Variabili
Linguaggio C Struttura dei programmi e Variabili 1 La struttura generale dei programmi! Struttura del programma: Direttive Funzioni Dichiarazioni Istruzioni Di assegnamento direttive Di ingresso e uscita
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
DettagliTipi strutturati in C. Stringhe
Tipi strutturati in C Stringhe Stringhe Una stringa di caratteri in C è un array di caratteri terminato dal carattere \0 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1 caratteri,
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
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
Dettagli