[C] Problema con <ctype.h>

Flamber
Buongiorno a tutti. Ho scritto un programmino che dovrebbe:

1) Acquisire una stringa di caratteri
2) Modificare in maiuscole le lettere minuscole.
3) Sostituire gli spazi con il carattere "_".
4) Sostituire i numeri con il carattere '*'.

ecco il codice:

#include <stdio.h>
#include <string.h>
#include <ctype.h>


int main (){
    

    char V[20];
    int i;
    
    scanf("%s",V);
    
 
        for (i=0; i<strlen(V); i++) {
            if (isdigit(V[i])!=0) {
                V[i]='*';
            }
           
        }
        for (i=0; i<strlen(V); i++) {
            if (islower(V[i])!=0) { 
                V[i]=toupper(V[i]);
            }
    
        }
        
        for (i=0; i<strlen(V); i++) {
            if (isspace(V[i])!=0) {
                V[i]='_';
            }
        }
        
        
    puts(V);
        
    
 return 0;   
    
}


Perchè non funziona? quale è il problema???

Risposte
apatriarca
Il motivo per cui il codice non funziona è che %s termina di leggere una stringa appena incontra il primo spazio. Per leggere una riga intera da standard input utilizza fgets (oppure puoi leggere un carattere per volta con getchar fino ad incontrare il carattere '\n' - ma in questo caso devi inserire i tre if nello stesso ciclo).

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