Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [c] controllo lunghezza stringa

    Esiste un modo in c per controllare la lunghezza di una stringa mentre viene immessa???
    cioè se l'utente supera la lunghezza massima della stringa, come faccio a notificarglielo impedendogli di sporcare fuori dall'array di char?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Puoi usare all'interno della scanf il modificatore per indicare la lunghezza massima (vedi http://www.cplusplus.com/reference/c.../cstdio/scanf/).

    Oppure con la fgets (vedi http://www.cplusplus.com/reference/c.../cstdio/fgets/) indicando la lunghezza massima del buffer.

    Ma tutto questo limita l'inserimento nel buffer, non puoi sapere se l'utente ha scritto più del massimo consentito a meno che tu non costruisca una tua funzione che accetta carattere dopo carattere e controlla la massima lunghezza.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Con la fgets si può, basta verificare se l'ultimo carattere acquisto è '\n'. Se non lo è, l'input è stato troncato.
    (in realtà c'è un corner case: potrebbe essere stata letta tutta la stringa e lasciato fuori solo il '\n', cosa che comunque puoi verificare con una getch).
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da MItaly
    (in realtà c'è un corner case ...
    E' comunque un caso che implica l'incertezza e la scrittura di altro codice ... meglio farsi una funzione apposita da riusare quando si vuole ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Grazie a tutti

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 © 2024 vBulletin Solutions, Inc. All rights reserved.