Problema con stringhe

di Anonimizzato27141 il
3 risposte

    char parolaind[strlen(parola)];
    strcpy(parolaind,"");
    for(i=0;i<strlen(parola);i++)
        parolaind[i]='*';
    
quando stampo la stringa e prendiamo parola=ciao (per esempio) parolaind dovrebbe essere **** e invece ottengo questo ****í¦`

3 Risposte

  • Basta fare bene i conti:
    parola=="ciao"
    strlen(parola)==4
    parola[0]=='c'
    ...
    parola[3]=='o'
    parola[4]=='\0'
    strlen("")==0
    
    Ne consegue che dopo
    strcpy(parolaind,"");
    parolaind[0]=='\0'
    parolaind[1]==immondizia
    parolaind[2]==immondizia
    parolaind[3]==immondizia
    
    quindi
    parolaind[4]==out of boundaries
    Prova con
    char parolaind[strlen(parola)+1];	// altrimenti il '\0' non ci sta
    memset(parolaind, 0, strlen(parola)+1);
  • Si funziona, quindi se ho capito bene
     memset(parolaind, 0, strlen(parola)+1); 
    serve per ripulire la memoria del vettore?
  • Semplicemente devi aggiungere il carattere null alla fine della stringa esplicitamente dopo la for.
    La memset lo fa anche se azzera tutta la stringa.
    Il tuo codice poteva essere
    [Code] char parolaind[strlen(parola)+1]; for(i=0;i<strlen(parola);i++) parolaind[i]='*'; parolaind[i]=0; Studia meglio cosa sono le stringhe terminate da null
Devi accedere o registrarti per scrivere nel forum
3 risposte