c语言access函数段错误,stat函数段错误

环境centos7 编程语言c

今天在用stat函数读取文件夹的状态是出错,一开始直接传入文件文件夹名返回都是-1,后来查了一下发现需要传入绝对路径,于是文件名与路径名组合起来传入stat之后就报段错误,改了半天都没发现怎么回事,gdb跟踪也没发现什么问题

下面是代码:

#include

#include

#include

#include

#include

int main(void)

{

DIR *dp;

struct dirent *ep;

struct stat st;

char dirp[50];

char absPath[100];

printf("请输入目录:\n");

scanf("%s",&dirp);

dp=opendir(dirp);

printf("filename:\ttype:\tPermission\taccesstime\tlastmodtime\tsize\t\n");

if(dp!=NULL)

{

printf("xxx\n");

while(ep=readdir(dp))

{

if(ep->d_name[0]!='.')

{

printf("xx\n");

if(strcmp(dirp,"/")==0)

{

strcpy(absPath,dirp);

strcat(absPath,ep->d_name);

}else

{

strcpy(absPath,dirp);

strcat(absPath,"/");

strcpy(absPath,ep->d_name);

}

printf("%s\n",absPath);

if(stat(absPath,&st)!=-1)

{

printf("%s\t",ep->d_name);

if((st.st_mode&S_IFMT)==S_IFDIR)

printf("Directory\t");

else if((st.st_mode&S_IFMT)==S_IFBLK)

printf("Block special file\t");

else if((st.st_mode&S_IFMT)==S_IFCHR)

printf("character special file\t");

else if((st.st_mode&S_IFMT)==S_IFREG)

printf("Ordinary file\t");

else if((st.st_mode&S_IFMT)==S_IFIFO)

printf("pipefile file\t");

printf("%o\t",st.st_mode&0x1ff);

printf("%15s\t",ctime(st.st_atime)); //文件创建时间

printf("%15s\t",ctime(st.st_mtime)); //文件上次修改时间

printf("%ld\n",st.st_size);

}

}

}

closedir(dp);

}else

{

puts("Couldn't open the directory.\n");

}

return 0;

}

运行截图:

bVbaCat?w=1053&h=372

GDB跟踪打印的信息:

bVbaCcl?w=1841&h=831

希望各位大佬给我这个初学者一点提示,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值