Problema con stringhe

di il
3 risposte

Problema con stringhe


    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

  • Re: Problema con stringhe

    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);
  • Re: Problema con stringhe

    Si funziona, quindi se ho capito bene
     memset(parolaind, 0, strlen(parola)+1); 
    serve per ripulire la memoria del vettore?
  • Re: Problema con stringhe

    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