概述stat&S_IFREG in C ++
voID fun1(char *fl){ //flnamep : stores the path of our directory DIR *dip; struct dirent *dit; dip = opendir(fl); if (dip==NulL) {cerr<<\”Errorn\”;exit(-1);} while ((dit=readdir(dip))) { string trun = (dit->d_name); struct stat buff; stat(dit->d_name,&buff); if (((buff.st_mode & S_IFREG)==S_IFREG)) {cout<<\”file\”<<endl;} else if (((buff.st_mode & S_IFDIR)==S_IFDIR)) {cout<<\”Dir\”<<endl;} } closedir(dip); }
代码不区分目录和文件。 我错过了什么? 我不能使用Boost或其他STL。 只有C Posix支持的文件。 需要知道我是错的。
按照答案更新代码
DIR *dip; struct dirent *dit; dip = opendir(flnamep); if (dip==NulL) {cerr<<\”Errn\”;exit(-1);} while ((dit=readdir(dip))) { string trun = (dit->d_name); string fullpath = flnamep; fullpath+=\’/\’; fullpath+=trun; if((trun==\”.\”) || (trun==\”..\”)) {cout<<\”\”;} else { struct stat buff; stat(dit->d_name,&buff); if (((buff.st_mode & S_IFDIR)==S_IFDIR)) {cout<<\”Dir\”<<endl;} else {cout<<\”file\”<<endl;} }
C ++访问主外部的命令行参数?
如何在linux上正确设置串行通信
为什么linux转储干净MAP_ANONYMOUS内存页面到核心转储?
信号处理器与事件处理程序
奇怪的posix消息队列链接问题 – 有时它不正确链接
Vista中的升级过程不会覆盖文件
特定于Cell linux环境的GDB文档在哪里?
使用共享variablES10 pthreads
在linux下共享内存映射
键盘笔画与windows服务
我怀疑ENOENT (没有这样的文件)实际上失败,所以buff不包含任何有用的东西。
stat(dit->d_name,&buff); /* dirent.d_name is just the name,not the full path */
你可能想连接fl,\”/\”,d_name 。 但首先检查stat返回的stat 。
总结
以上是内存溢出为你收集整理的stat&S_IFREG in C ++全部内容,希望文章能够帮你解决stat&S_IFREG in C ++所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容