当前位置: 技术问答>linux和unix
使用stat函数遇到的问题,请诸位高人指点
来源: 互联网 发布时间:2017-03-15
本文导语: 本帖最后由 human_blue 于 2012-09-12 21:04:28 编辑 在Linux系统中, 源代码如下, 功能是想查找record文件夹下的文件名, 以及文件的大小. 但是函数运行结束后,程序却自动退出了, 而如果把stat部分的代码屏蔽掉, 则程序就正...
int FileList()
{
int i;
int a, b;
int result;
char temp[50];
long temp_size;
char list_name[40][50];
long list_size[40];
DIR *dir_info;
struct dirent *dir_file;
struct stat *buf;
i = 0;
dir_info = opendir("./record/");
if( dir_info != NULL )//打开目录成功
{
if( (dir_file = readdir(dir_info)) == NULL)
{
show_info( "finding records error!" );
return i;
}
while( (dir_file = readdir(dir_info)) != NULL )
{
if( (strcmp(dir_file->d_name, "..") == 0) || (strcmp(dir_file->d_name, ".") == 0) )//忽略这两个特殊项
continue;
sprintf( list_name[i], "%s", dir_file->d_name );
sprintf( temp, "./record/%s", dir_file->d_name );
result = stat( temp, buf );
if( result != 0 )
{
show_info("Records initialization error!");
closedir(dir_info);
return i;
}
else
list_size[i] = buf->st_size;
i++;
} // end of while
closedir(dir_info); //使用完毕,关闭目录指针。
}
}
|
Sorry,是我没讲明白。
struct stat *buf;没有申请空间,加上
struct stat *buf;没有申请空间,加上
buf = (struct stat *)malloc(sizeof(*buf));建议楼主先看书。
if(!(buf)) return -1;
...
free(buf);//用完要释放
|
struct stat *buf;
buf是指针,内存呢? 没学好C就学Linux了?
buf是指针,内存呢? 没学好C就学Linux了?