Carattere di terminazione nel vettore di stringhe in C

di il
3 risposte

Carattere di terminazione nel vettore di stringhe in C

Buongiorno ragazzi,

sul mio manuale di programmazione viene detto che gli elementi del vettore di stringhe (e di caratteri) devono essere n+1, perchè l'ultimo elemento è riservato al carattere di terminazione '\0'.
Quindi se ho necessità di inserire 9 elementi, devo riservare lo spazio per 10, giusto?
Ma perchè scusate, l'elemento vett[0] non si considera? già con questo si ha uno spazio in più, perchè non posso considerare la lunghezza n-1? mi direte che è una regola, in realtà facendo delle prove di stampa su codeblocks, non sembrerebbe avere riscontro pratico.
inoltre il carattere di terminazione '\0' deve essere inserito dall'utente, oppure è in default?
grazie .
SERENA

3 Risposte

  • Re: Carattere di terminazione nel vettore di stringhe in C

    Se hai una stringa di 1 carattere devi prevederne 2. In questo caso il carattere starà in

    V[0]

    e il terminatore in

    V[1]
  • Re: Carattere di terminazione nel vettore di stringhe in C

    Quindi se ho 9 caratteri, la dimensione del vettore sarà 9.. niente di nuovo quindi rispetto ai vettori numerici..
  • Re: Carattere di terminazione nel vettore di stringhe in C

    Non confondere la dimensione di un array con l'indice del suo ultimo elemento.
    Indipendentemente da stringa, array di interi o array di qualsiasi altra cosa, in C hai:
    posto n il numero di elementi
    l'indice 0 è il primo elemento
    l'indice n-1 è l'ultimo elemento
    Nulla ti vieta di andare a leggere/scrivere fuori da questi indici perchè in C non c'è il controllo sugli indici; certamente otterrai risultati inattesi!
    Infine, una stringa C è un array di char che termina con il carattere terminatore, si tratta di una convenzione (è così che ragionano le funzioni di libreria come strlen() strcpy() ...).
    Quindi se vuoi una stringa di 4 caratteri per inserire "CIAO" devi predisporre almeno un
    char str[5];
    e facendo
    strcpy( str, "CIAO" );
    otterrai
    str[0]='C';
    str[1]='I';
    str[2]='A';
    str[3]='O';
    str[4]=0;
Devi accedere o registrarti per scrivere nel forum
3 risposte