Originariamente inviato da Fobia
bhe...io sapevo che il terminatore di stringa era \0 ... sbaglio?
No, non sbagli.
Ma è una convenzione del C, se io volessi le le mie stringhe terminassero con il ; nessuno me lo può vietare. Ovvio che dovrei riscrivermi tutte le funzioni perchè risconoscano il ; come terminatore.
Quando si parla di stringhe C si tende a dimenticare che sono array in tutto e per tutto.
Se un giorno devi lavorare con array di interi non hai un terminatore predefinito per dirti quanto è lungo l'array, ma devi saperlo tu.

Addirittura c'è una funzione delle API di Windows riguardante i file files da cestinare (non cancellare) che richiede una stringa dei files separata da NULL e termina con un doppio NULL.

Se segui questa strada occhio che il debugger ti farà vedere solo la parte dell'array dall'inizio al primo NULL anche se l'array continua.
Se segui la strada di Samuele probabilmente ti complichi meno la vita.


La dimensione del buffer l'ho indicata solo per semplicità, nulla ti vieta di allocare dinamicamente l'array, ma la dimensione in ogni caso devi controllarla tu.