PDA

Visualizza la versione completa : [C] Controllo caratteri alfanumerici in una stringa


Vincent
09-11-2006, 00:41
ho scritto una piccola funzione C che controlla se in una stringa presa in input sono presenti caratteri diversi da lettere e numeri...per se nella stringa c' la chiocciola la deve prendere...

non so perch, ma non mi convince...




int ForbiddenChars
(
char *str /* Stringa da filtrare */
)
{
int i;

for(i=0; str[i]!='\0'; i++)
{
if( !isalpha(str[i]) || !isdigit(str[i]) )
{
return 1;
}
else if ( str[i] == '@' )
{
return 0;
}
else return 0;
}
}



Qualcuno mi da una delucidata...?

oregon
09-11-2006, 01:07
Secondo me dovresti modificarlo cosi'



int ForbiddenChars(char *str)
{
int i;

for(i=0; str[i]; i++)
if(str[i]!='@')
if(!isalpha(str[i]) && !isdigit(str[i]))
return(1);

return 0;
}

Vincent
09-11-2006, 02:03
grazie mille!! la soluzione sempre pi semplice di quanto mi aspetti.... Sono troppo complicato :rollo:

Vincent
12-11-2006, 16:55
Originariamente inviato da oregon
Secondo me dovresti modificarlo cosi'



int ForbiddenChars(char *str)
{
int i;

for(i=0; str[i]; i++)
if(str[i]!='@')
if(!isalpha(str[i]) && !isdigit(str[i]))
return(1);

return 0;
}


Un piccolo dubbio: ma se il carattere che inserisco nella stringa la chiocciola...perch poi nella stringa mi inserisce questo: ???

Secondo me un problema di ASCII...

oregon
12-11-2006, 19:12
Il problema non e' nel codice ma nel set di caratteri usati per la visualilzzazione nella console.

Vincent
12-11-2006, 19:30
come risolvo?

oregon
12-11-2006, 19:40
Come fai l'input e l'output della stringa?

Vincent
12-11-2006, 19:46
in input utilizzo fgets...
in output printf con parametro %s....

oregon
12-11-2006, 20:18
Stiamo parlando di un programma in modalita' console?

Vincent
12-11-2006, 20:22
siii!

Loading