Salve, sono nuovo del forum e volevo chiedervi un piccolo aiuto.
Sto preparando l'esame di programmazione all'università e sto man mano andando avanti con gli argomenti, ma veniamo al dunque.
Sto svolgendo un esercizio, ovvero eseguire la ricerca completa (o sequenziale) di un elemento in un vettore di caratteri. Praticamente, inserisco singolarmente tutti i caratteri della stringa, ed ovviamente li salvo tramite una scanf. Il problema si presenta quando effettuo la ricerca solo per il primo elemento, mi spiego meglio dopo aver postato il codice:
#include <stdio.h>
#define dim 100
int main() {
char v[dim], c;
int i, n;
printf("\t\t\t\t\t ESEMPIO DI RICERCA COMPLETA IN UN VETTORE.\n");
do {
printf("\nInserire dimensione vettore compresa tra 0 e %d: ", dim);
scanf("%d", &n);
if (n < 0 || n > dim) {
printf("\n\t\t\t\t\tInserire valore corretto!");
}
} while (n <= 0 || n > dim);
printf("\n");
for (i = 0; i < n; i++) {
printf("Inserire valore di indice %d: ", i +1);
scanf("%1s", &v[i]);
}
//Inizio fase di ricerca.
printf("\n");
printf("Inserire elemento da cercare: ");
scanf(" %1s", &c);
i = 0;
while (c != v[i] && i < n)
i++;
if (c == v[i]) {
printf("\n L'elemento %c e' presente nel vettore in posizione %d!", c, i + 1);
} else{
printf("\n L'elemento non e' presente nel vettore!\n");
}
}
Se stampo la stringa prima della parte di codice che segue il commento //Inizio fase di ricerca, la stringa viene stampata correttamente.
Dopo aver inserito il carattere da ricercare, invece, magicamente il primo carattere della stringa scompare. Per esempio, se la mia stringa è: QWERTY, dopo aver inserito il carattere da ricercare, la mia stringa diventerà magicamente WERTY (verificato tramite printf). Quindi, il codice funziuona correttamente, tranne che per il primo carattere, che venendo "mangiato" da non so cosa, non lo riconosce tra i caratteri presenti nella stringa. Ringrazio anticipatamente per le risposte e chiedo scusa per la lunghezza del post, ho cercato di essere il più chiaro possibile.