Perché questo lavoro:Uso corretto della Stat su C
char *fd = "myfile.txt";
struct stat buf;
stat(fd, &buf);
int size = buf.st_size;
printf("%d",size);
Ma questo non funziona:
char *fd = "myfile.txt";
struct stat *buf;
stat(fd, buf);
int size = buf->st_size;
printf("%d",size);
per favore, non usare fd come nome var per qualcosa che non è un descrittore di file. – ninjalj
Se compili con '-Wall -O', riceverai questo avviso da gcc:' warning: 'buf' è usato non inizializzato in questa funzione'. – caf
Sebbene i problemi di allocazione della memoria siano più critici, non dovresti prestare attenzione al contenuto di buf (o alla struttura puntata da buf) finché non sai che 'stat()' è riuscita - che tu determini controllandone il valore ritorna. Se fallisce, il contenuto di buf non ha senso. –