Tại sao công việc này:sử dụng đúng của Stat trên C
char *fd = "myfile.txt";
struct stat buf;
stat(fd, &buf);
int size = buf.st_size;
printf("%d",size);
Nhưng điều này không làm việc:
char *fd = "myfile.txt";
struct stat *buf;
stat(fd, buf);
int size = buf->st_size;
printf("%d",size);
vui lòng không sử dụng fd làm tên biến cho thứ không phải là bộ mô tả tệp. – ninjalj
Nếu bạn biên dịch bằng '-Wall -O', bạn sẽ nhận được cảnh báo này từ gcc:' warning: ‘buf’ được sử dụng uninitialized trong hàm này'. – caf
Mặc dù vấn đề cấp phát bộ nhớ là quan trọng nhất, bạn không nên chú ý đến nội dung của buf (hoặc cấu trúc được chỉ ra bởi buf) cho đến khi bạn biết rằng 'stat()' đã thành công - bạn xác định bằng cách kiểm tra giá trị trả về. Nếu nó thất bại, nội dung của buf là vô nghĩa. –