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?
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?
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.
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.
E' comunque un caso che implica l'incertezza e la scrittura di altro codice ... meglio farsi una funzione apposita da riusare quando si vuole ...Originariamente inviato da MItaly
(in realtà c'è un corner case ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Grazie a tutti