Terminatore stringa

di il
4 risposte

Terminatore stringa

Ciao a tutti, questo è un banalissimo programma che stampa la lunghezza della parola. Ho solo un dubbio, nel while c'è s!=0 che non ho capito cosa significa, ho pensato che potrebbe essere: "Finchè l'elemento in posizione i non è un terminatore, avanza nel conteggio e stampa il risultato. E' giusto?

char s[]=“parola1”;

int i=0;
while (s!=0)
i++;

cout<<i<<endl

4 Risposte

  • Re: Terminatore stringa

    Corretto ... ma la stampa avviene solo all'uscita dal ciclo ...
  • Re: Terminatore stringa

    Esattamente, anche se in realtà il carattere terminatore delle stringa alla C non è lo zero ma il carattere "NULL" che sarebbe il carattere avente codice 0 nella codifica appunto dei caratteri (tipo ASCII o UTF-8, per intenderci). Spesso questo "NULL" viene indicato così --> '\0'
    In questo caso però evidentemente il compilatore legge quello zero come carattere NULL e quindi il tutto funziona correttamente.
    Ho provato a sostituire quello zero con la costante NULL e funzionava dandomi un warning, poi ho provato a mettere '\0' al posto dello zero e funzionava ancora bene senza neanche il warning.

    Spero di non aver detto inesattezze...
  • Re: Terminatore stringa

    Apposto, ho controllato anche io e funziona lo stesso! Grazie mille!
  • Re: Terminatore stringa

    Quel genere di controllo funziona unicamente nell'ipotesi in cui un carattere occupi esattamente un byte.
    In ogni altro caso (utf8, utf16 con tanto di problemi little-big endian) no.

    Quindi, essenzialmente, dipende dalla dimensione effettiva di un char
Devi accedere o registrarti per scrivere nel forum
4 risposte