Stringhe
1. Assunzione di string
Copiare una stringa in un’altra.
2. Copiare una stringa in un'altra
Concatenare due stringhe.
3. Concatenare due stringhe
Confrontare due stringhe.
Allocazione dinamica
1. Funzioni di allocazione
Allocazione di matrici.
File
1. Apertura, verifiche, chiusura
Lettura da file.
2. Lettura da file
Scrittura su file.
3. Scrittura su file
Controllo di fine file.
4. Manipolazione puntatori
Conteggio del numero di caratteri.
Strutture e liste
1. Aggiungere elemento (testa, coda)
Inserire elementi in ordine.
2. Inserire elementi in ordine
Ricerca di un dato nella lista.
3. Ricerca di un dato nella lista
Rimuovere elemento (testa, coda).
4. Rimuovere elemento (testa, coda)
Stampare lista.
5. Stampare lista
Funzione crea lista.
6. Funzione crea lista
Funzione cancella lista.
Programmazione
Array
1. Lascia maiuscole solo le iniziali di ogni parola
Manda a capo ogni parola.
2. Manda a capo ogni parola
Ordinamento di un array.
3. Ordinamento di un array
Parola palindroma.
4. Parola palindroma
Numeri primi.
5. Numeri primi
Crivello di Eratostene.
6. Crivello di Eratostene
Conteggio ripetizioni di ogni lettera.
7. Conteggio ripetizioni di ogni lettera
MCD e mcm.
8. MCD e mcm
Somma di due numeri binari.
9. Somma di due numeri binari
Anagrammi.
10. Anagrammi
Verifica se stringa contiene binari.
11. Verifica se stringa contiene binari
Verifica sottostringhe.
12. Verifica sottostringhe
Fibonacci.
File
1. Acquisizione di stringa da tastiera e scrittura su file
Copiare contenuto file su un altro file.
2. Copiare contenuto file su un altro file
Contare il numero di righe di un file.
3. Contare il numero di righe di un file
Contare quanti elementi numerici ci sono in un file.
4. Contare quanti elementi numerici ci sono in un file
Legge interi da file e scrive su un altro.
Liste
1. Somma due liste in una terza
Data una lista crea seconda lista con elementi invertiti.
2. Data una lista crea seconda lista con elementi invertiti
Ordinamento elementi con BubbleSort.
3. Ordinamento elementi con BubbleSort
Conta numero di elementi comuni a due liste.
RICORDARSI DI INCLUDERE !!! #include string.h
Assunzione di string
assumere string
scanf ("%s", frase) // salva la stringa fino al primo spazio che trov
%s non può essere usato se si vuole inserire una stringa con spazi
scanf ("%[^\n]", frase) // assume stringa fino all’invio
printf ("%s", frase) // stampa anche spazi
Migliore metodo assumere stringa!
for(i=0; (str1[i]=getchar())!='\n' && (i str1[i]='\0' printf ("%s", str1) // si può stampare con %s, stampa anche gli spazi Assumere stringa fino a immissione di carattere preciso unsigned int counter = 0 do scanf("%c", &carattere) if (carattere != '#') stringa[counter] = carattere counter++ } while (counter<10 && carattere != '#') Copia str2 in str (funzione strcpy) strcpy (str1, str2) // copia la seconda stringa nella prima string il valore presente nella prima stringa viene perso! Copia str2 in str (implementato) for(i=0; (str1[i]=str2[i])!='\0'; i++) Copia primi n caratteri di str2 in str1 (funzione strncpy) strncpy (str1, str2, n) Copia primi n caratteri di str2 in str1 (implementato) for(i=0; (str1[i]=str2[i])!='\0' && (i Concatena str1 e str2 in str (funzione strcat) strcat (str1, str2) // le stringhe vengono concatenate attaccate (bisogna aggiungere spazio) Concatena str1 e str2 in str (implementato) for(i=0; (str1[i])!='\0'; i++) for(j=0; (str1[i]=str2[j])!='\0'; i++, j++) Concatena i primi n caratteri di str2 in str1 strncat (str1, str2, n) Confronta str1 con str (funzione strcmp) strcmp (str1, str2)=0 se str1 == str Codice: if (strcmp (str1, str2) == 0) printf ("Le due stringhe sono uguali"); } else if (strcmp (str1, str2) < 0) printf ("%s < %s ", str1, str2); } else printf ("%s > %s ", str1, str2); Confronta str1 con str (funzione strcmp) for(i=0; (prima[i] == seconda[i]) && (prima[i] != '\0') && (seconda[i] != '\0'); i++) if(prima[i]==seconda[i]) printf("Sono uguali\n"); else if(prima[i]>seconda[i]) printf("La prima è maggiore della seconda\n"); else printf("La seconda è maggiore della prima\n"); RICORDARSI DI INCLUDERE !!! #include stdlib.h Funzione di allocazione e inizializzazione apuntatore = (tipo*) calloc (n*sizeof (tipo)) Funzione di deallocazione free (puntatore) Funzione che passata una dimensione alloca memoria char* alloca (int n) return (char*) malloc (n*sizeof (char)) Allocazione di una matrice dinamica int **matrice int i // alloco il vettore delle righe (ogni elemento è un puntatore matrice = (int**) malloc (R*sizeof (int*)) // per ogni riga alloco le colonne for (i=0; i<R; i++) matrice[i] = (int*) malloc (C*sizeof (int)) // deallocazione di una matrice dinamica // per ogni riga dealloco le colonne for (i=0; i<R; i++) free (matrice[i]) // dealloco il vettore delle colonne free (matrice) Si può aprire e chiudere un file più volte nello stesso programma per aprirlo e richiuderlo in differenti modalità. Apertura del file int main (void) FILE *fp // variabile di tipo puntatore a file fp = fopen ("nome_file", "mode") // funzione di apertura Ritorna come risultato un puntatore al file aperto Verificare l'apertura del file "r" = apertura in lettura (read) NULL = se il file aperto in lettura non esiste "w" = apertura in scrittura (write) Se il file al momento dell'apertura non esiste verrà creato, in caso contrario il contenuto preesistente sarà sovrascritto.2. Copiare una stringa in un'altra
3. Concatenare due stringhe
4. Confrontare due stringhe
<0 se str1 < str
>0 se str1 > strAllocazione dinamica
1. Funzioni di allocazione
2. Allocazione matrici
File
1. Apertura, verifiche, chiusura