我正在使用此代码段:
struct stat *fileData;
if((fd=open("abc.txt",O_RDONLY)==-1)
perror("file not opened");
if((fstat(fd,fileData)==-1)
perror("stucture not filled");
printf("%d",fileData.st_size);
它显示了我的错误:
request for member ‘st_size’ in something not a structure or union
我也尝试使用stat
。
答案 0 :(得分:3)
现在你正在写(fstat
is)到一个未初始化的指针,然后尝试从它读取,好像它是struct stat
。您应该将代码更改为:
struct stat fileData;
if((fstat(fd, &fileData) == -1)
^
或者,你可以malloc
将记忆转移到fileData
,然后使用fileData->st_size
。这将不那么优雅(你必须free
等。)。
答案 1 :(得分:0)
您的fileData
结构是一个指针。 fileData.st_size
必须为fileData->st.size
或(*fileDate).st_size
但是,stat()希望你提供struct stat的存储,你必须这样做
struct stat fileData; // <---change to this
if((fd=open("abc.txt",O_RDONLY)==-1)
perror("file not opened");
if((fstat(fd,&fileData)==-1) // <---change to this
perror("stucture not filled");
printf("%d",fileData.st_size);