vuoi
o PayPal
tutte le volte che vuoi
• Confronto tra stringhe
• senza libreri
È possibile verificare se due stringhe coincidono: verificando se esse coincidono in ogni elemento fino a
che (almeno) una delle due termina
#include <stdio.h>
int fine = 0, uguali = 1;
int i = 0; 3 controlli iniziali
char s1[30], s2[30];
int main() {
gets(s1);
gets(s2);
while (i < 30 - 1 && uguali == 1 && fine == 0) {
if (s1[i] != s2[i])
uguali = 0;
else if (s1[i] == '\0') /* qui s1[i] == s2[i] */
fine = 1;
i++;
}
printf("%s e %s ", s1, s2);
if (uguali == 0)
printf("non ");
printf("coincidono");
return 0;
}
• Con libreria
Possibile usare la funzione strcmp, contenuta nella libreria string.
Sintassi strcmp(s1 , s2); S1, elemento da confrontare con S2
strcmp(s1, s2);
int cmpr;
cmpr = strcmp(str1, str2);
if (cmpr == 0)
printf("%s e %s coincidono", str1, str2);
• == 0 se coincidono
• < 0 se s1 precede s2 in ordine alfabetico
• > 0 se s1 segue s2 in ordine alfabetico
• Copia tra stringhe
• senza libreri
È possibile assegnando un carattere alla volta
#include <stdio.h>
#define N 100
#define M 50
int main() {
char s1[N], s2[M]; /* Si suppone N >= M */ Copio s2 in s1
int i = 0;
gets(s2); // Lettura di s2
// Copia dei caratteri da s2 a s1
while (i < N && s2[i] != '\0') {
s1[i] = s2[i];
i++;
}
s1[i] = '\0'; // Terminazione della stringa s1
printf("s1: %s\n", s1);
return 0;
}
• Con libreria
È possibile eseguire la copia elemento per elemento da un array ad un altro.
Oppure è possibile usare la funzione strcpy,contenuta nella libreria string.
Copia il contenuto di s2in s1 incluso il ‘\0’
strcpy(s1, s2);
• Struct e Liste sequenziali
// Definizione della struttura Lista
typedef struct { Come viene definita una
int N; // Numero di elementi nella sequenza struttura che contiene un
int Seq[10]; // Sequenza di numeri (massimo 10 elementi)
} Lista; char[] e un intero
// Dichiarazione delle variabili
Lista L;
- Ricerca di un valore
// Definizione della struttura Lista
typedef struct {
int N; // Numero di elementi nella sequenza
int Seq[10]; // Sequenza di numeri (massimo 10 elementi)
} Lista; Quando il valore viene
trovato manda falsa
// Dichiarazione delle variabili
Lista L; // Variabile di tipo Lista questa condizione che
int val; // Valore da cercare non rende più uguale
int i; // Indice di iterazione &&
int pos; // Posizione del valore nella sequenza != vuol dire diverso
// Inizializzazione dell'indice
i = 0;
// Ricerca del valore nella sequenza && questo e quello
while (i < L.N && L.Seq[i] != val) { tutte e due le
i++; // Incrementa l'indice
} condizioni devo essere
soddisfatte
// Controllo se il valore è stato trovato
if (i < L.N) { || una delle due
pos = i; // Il valore è stato trovato, memorizza la posizione
} else { condizioni deve essere
pos = -1; // Il valore non è stato trovato, posizione non valida soddisfatta
}