Visualizzazione dei risultati da 1 a 6 su 6

Discussione: strlen c++

  1. #1

    strlen c++

    Ciao a tutti!

    Ho 2 quesiti correlati.

    1) La funzione strlen mi dà la lunghezza della stringa passata come parametro. Ma contando anche il teminatore di stringa oppure no?

    ho fatto questa prova:

    codice:
    char stringa [10];
    cout<<"scrivi una frase"<<endl;
    cin.getline (stringa,10);
    cout<<"la lunghezza della stringa e': " << strlen(stringa);
    inserendo una stringa di 10 caratteri per esempio 1234567890

    la funzione strlen mi dice che la stringa ha lunghezza 9.

    Perche'?

    cin.getline (stringa,10); non dovrebbe leggere 10 caratteri e quindi poi la funzione strlen dirmi che la lunghezza e' 10?

    2) Dubbio sorto dal primo.
    Se dichiaro:

    char stringa [10];

    significa che ho 10 posizioni libere + 1 per il terminatore di stringa \0?
    oppure che ne ho 9 libere e la decima è per il terminatore di stringa \0?

    Grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: strlen c++

    Originariamente inviato da isolaflo
    char stringa [10];

    ...

    la funzione strlen mi dice che la stringa ha lunghezza 9.

    Perche'?
    Perchè prevedi 10 caratteri nella stringa, quindi 9+1 contando il terminatore.

    La strlen non comprende mai il terminatore.


    2) Dubbio sorto dal primo.
    Se dichiaro:

    char stringa [10];

    significa che ho 10 posizioni libere + 1 per il terminatore di stringa \0?
    oppure che ne ho 9 libere e la decima è per il terminatore di stringa \0?
    9 libere
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ok.
    quindi se metto:

    codice:
    char stringa [11];
    cout<<"scrivi una frase"<<endl;
    cin.getline (stringa,10);
    cout<<"la lunghezza della stringa e': " << strlen(stringa);
    leggo 10 caratteri dalla stringa, ma la strlen mi dà lunghezza ancora di 9.
    E' perche' quando scrivo cin.getline (stringa,10); mi prende 9 posizioni e la decima ci mette automaticamente il terminatore di stringa, giusto?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Esatto .... indica 11 nella getline
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    grazie mille!!! era un dubbio che non mi lasciava in pace!!!
    Thanks so much!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da isolaflo
    grazie mille!!! era un dubbio che non mi lasciava in pace!!!
    Thanks so much!
    Prego ... anche se è tutto ben spiegato nella documentazione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.