Sono venuto a disturbare tutti con un'altra domanda C probabilmente molto semplice.Quick strlen question
utilizzando il seguente codice:
int get_len(char *string){
printf("len: %lu\n", strlen(string));
return 0;
}
int main(){
char *x = "test";
char y[4] = {'t','e','s','t'};
get_len(x); // len: 4
get_len(y); // len: 6
return 0;
}
2 domande. Perché sono diversi e perché è 6? Grazie ragazzi.
EDIT: Scusa, so cosa aggiustarlo, volevo solo capire cosa stava succedendo. Quindi strlen continua a inoltrare il punto fino a quando non trova un \ 0? Anche quando ho eseguito il comando nella funzione principale invece che nella funzione get_len, entrambi erano 4. Era solo una coincidenza?
Sì, è stata solo una coincidenza. – AnT
A parte le risposte (che sono eccellenti se un po 'ripetitive) vorrei sottolineare che mentre "test" è una comoda sintassi per la sequenza "t", "e", "s", "t" , 0', puoi infatti come caso speciale inizializzare un array di caratteri con 'char y [4] =" test ";' nel qual caso verrà omesso lo 0 finale (non c'è semplicemente spazio per esso in 'y'). –