Ragazzi vorrei proporvi un piccolo programma in C !

menale1
Il programma deve eseguire una tale operazione , ossia : data una stringa ed un determinato carattere immesso dall'utente , definisca se tale carattere sia presente nella stringa e quante volte vi compaia . Io ho optato per questa soluzione :

#include
#include
#include
int main (void){
char s[20];
int len , i , som , d ;
printf("INSERIRE STRINGA");
scanf("%s",s);
printf("INSERIRE CARATTERE");
scanf("%s",&d);
som=0;
len=strlen(s);
for(i=0;i<=len;i++){
if(s==d){
som+=1;
}
}
if(som==0){
printf("CARATTERE ASSENTE");
}else{
printf("IL CARATTERE SI PRESENTA %d VOLTE ", d);
}
system("PAUSE");
return 0;
}


.....ma con risultati poco felici . Sapreste dirmi il perché ? Per quale soluzione optereste , Voi ?

Risposte
vict85
&d nel secondo scanf?

apatriarca
Il metodo corretto per leggere un singolo carattere usando scanf è:
char c;
/* ... */
scanf(" %c", &c)

dove $c$ deve avere come tipo char e ho messo lo spazio per fare in modo che gli spazi venissero ignorati. Se vuoi utilizzare %s, devi per forza definire la variabile sulla quale scriverai il carattere come una stringa. Cioè:
char c[2]; /* devi fare spazio anche per '\0' */
/* ... */
scanf("%1s", c);

Nota la presenza dell'1 per limitare il numero di caratteri letti a uno solo.

Ogni stringa termina poi con '\0', non è quindi necessario ricorrere a strlen e si può utilizzare:
for(i=0; s[i] != '\0'; ++i) {
    /* ... */
}


Il resto può andare.

menale1
Grazie mille !!!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.