- Messaggi
- 32,514
- Reazioni
- 16,073
- Punteggio
- 254
Non litigate, facciamo un esempio pratico e si taglia la testa al toro.
Una stringa come "abcdefgh" è lunga 8 caratteri (size=8), indicizzati da 0 a 7 (poi internamente il C aggiunge il terminatore \0 e la stringa in memoria è come se fosse da 9 caratteri)
se cerchi una sequenza di lunghezza 2, per es. "gh", basta controllare (solo nel while...) fino al penultimo carattere ('g' di indice 6) incluso
ossia fino a size-1=7 ESCLUSO
quindi i va da 0 a 6 (il carattere 'g'), non c'è bisogno di ripetere il controllo nell'if e non può mai succedere un errore di "fuori stringa" perché controllando fino al penultimo carattere al massimo i+1 ti arriva sulla 'h'
poi la stringa può essere lunga 100, 1000, ... il ragionamento è lo stesso;
se la sequenza da cercare è lunga N, controlli al massimo fino a size-N+1 ESCLUSO (in questo caso N=2 -> controlli fino a 8-2+1=7 ESCLUSO)
oppure se preferisci fino a size-N incluso
Una stringa come "abcdefgh" è lunga 8 caratteri (size=8), indicizzati da 0 a 7 (poi internamente il C aggiunge il terminatore \0 e la stringa in memoria è come se fosse da 9 caratteri)
se cerchi una sequenza di lunghezza 2, per es. "gh", basta controllare (solo nel while...) fino al penultimo carattere ('g' di indice 6) incluso
ossia fino a size-1=7 ESCLUSO
quindi i va da 0 a 6 (il carattere 'g'), non c'è bisogno di ripetere il controllo nell'if e non può mai succedere un errore di "fuori stringa" perché controllando fino al penultimo carattere al massimo i+1 ti arriva sulla 'h'
poi la stringa può essere lunga 100, 1000, ... il ragionamento è lo stesso;
se la sequenza da cercare è lunga N, controlli al massimo fino a size-N+1 ESCLUSO (in questo caso N=2 -> controlli fino a 8-2+1=7 ESCLUSO)
oppure se preferisci fino a size-N incluso
Ultima modifica: