Quote:
Originariamente inviato da zanardi84
Ci avevo pensato, ma volevo averne la certezza. In ogni caso ancora non mi spiego perchè senza funziona.. Nel caso indicato da british penso che ci sia una inclusione naturale perchè il terminatore dovrebbe essere quello della riga del file.
|
Il perchè è dovuto al fatto che strncpy fa due controlli, uno sul terminatore e l'altro sulla dimensione.
Se abbiamo A = "pippo\0" e B di 10 elementi e usiamo strncpy specificando 10 come lunghezza, allora strncpy si fermerà perchè c'è il terminatore, altrimenti cercherà di copiare 10 elementi da A ( che è minore di 10 ).
Se invece specifichiamo 4 come lunghezza, allora sia che c'è il terminatore, sia che non c'è, comunque strncpy si ferma a 4 ( molto prima della fine della stringa reale ).