user-0 提问: linux 下c语言编程问题

回复:
user: user-1
content: 给你段代码，我以前项目的工程中的统计个数的，应该是没问题工程内调用了  显示文件的，工程内没调用，所以没调试过     int GetReadFileListCounter(char *pcBasePath) {         DIR *pDir;     struct dirent *ptr;     char acBase[1000];     int iFilesNum = 0;//文件个数     if ((pDir=opendir(pcBasePath)) == NULL)     {         printf("Open dir error...");         return -1;     }      while ((ptr=readdir(pDir)) != NULL)     {         if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0)    ///current dir OR parrent dir             continue;         else if((ptr->d_type == 8))  ///file         {                         //printf("d_name:%s/%s\n",pcBasePath,ptr->d_name);             //判断扩展名是否为txt，如果是就++             if(strcmp(strstr(ptr->d_name, ".txt"), ".txt") == 0)             {                 iFilesNum++;             }                      }                     else if(ptr->d_type == 10)    ///link file         {             //printf("d_name:%s/%s\n",pcBasePath,ptr->d_name);         }                     else if(ptr->d_type == 4)    ///dir         {             memset(acBase,'\0',sizeof(acBase));             strcpy(acBase,pcBasePath);             //判断最后一个字符是否是"/"             if(pcBasePath[strlen(pcBasePath) -1] != '/')             {                 strcat(acBase,"/");             }             strcat(acBase,ptr->d_name);             if(acBase[strlen(acBase) -1] != '/')             {                 strcat(acBase,"/");             }             iFilesNum += GetReadFileListCounter(acBase);         }     }     closedir(pDir);     return iFilesNum; }  int ShowReadFileList(char *pcBasePath) {         DIR *pDir;     struct dirent *ptr;     char acBase[1000];      if ((pDir=opendir(pcBasePath)) == NULL)     {         printf("Open dir error...");         return -1;     }      while ((ptr=readdir(pDir)) != NULL)     {         if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0)    ///current dir OR parrent dir             continue;         else if(ptr->d_type == 8)    ///file             printf("d_name:%s/%s\n",pcBasePath,ptr->d_name);         else if(ptr->d_type == 10)    ///link file             printf("d_name:%s/%s\n",pcBasePath,ptr->d_name);         else if(ptr->d_type == 4)    ///dir         {             memset(acBase,'\0',sizeof(acBase));             strcpy(acBase,pcBasePath);             strcat(acBase,"/");             strcat(acBase,ptr->d_name);             ShowReadFileList(acBase);         }     }     closedir(pDir);     return 1; }

user: user-2
content: 引用 2 楼 zy1404 的回复:http://www.php100.com/html/webkaifa/Linux/2009/1106/3485.html 这个建议很好，要是没有这本书的话可以搜一下电子版的就可以了。

user: user-3
content: 看一下高编吧，都有的，不建议使用popen

user: user-4
content: 文件操作 stat函数

user: user-5
content: 赵老师怎么知道的这么多啊  怎么才能这样

user: user-6
content: system("dir /b /a-d c:\\*.* >d:\\allfiles.txt"); //读文件d:\\allfiles.txt的内容即C:\\下所有文件的名字 system("dir /b /a-d /s c:\\*.* >d:\\allfilesinsub.txt"); //读文件d:\\allfilesinsub.txt的内容即C:\\下所有文件的名字包含子目录 system("dir /b /ad  c:\\*.* >d:\\alldirs.txt"); //读文件d:\\alldirs.txt的内容即C:\\下所有子目录的名字 请记住，能用shell命令获取文件、文件夹信息或者操作文件、文件夹最好用shell命令获取或者操作，而不要用各种API获取或者操作，因为当遇到非法文件夹名或非法文件名或非法文件长度、非法文件日期、压缩文件、链接文件、稀疏文件……等各种意料之外的情况时，API会处理的不全面或陷入死循环，而shell命令不会。  Linux用ls命令

user: user-7
content: 引用 4 楼 mujiok2003 的回复:简单的办法， 使用管道调用shell+1

user: user-8
content: stat          api

user: user-9
content: 简单的办法， 使用管道调用shell

user: user-10
content: 《UNIX环境高级编程》这本书楼主看一下吧。这些问题可以在这本书中找到答案

user: user-11
content: http://www.php100.com/html/webkaifa/Linux/2009/1106/3485.html

user: user-11
content: mkdir dir1 创建一个叫做 'dir1' 的目录' mkdir dir1 dir2 同时创建两个目录 mkdir -p /tmp/dir1/dir2 创建一个目录树 rm -f file1 删除一个叫做 'file1' 的文件' rmdir dir1 删除一个叫做 'dir1' 的目录' rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容 rm -rf dir1 dir2 同时删除两个目录及它们的内容  cd /home 进入 '/ home' 目录' cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录  pwd 显示工作路径 ls 查看目录中的文件 ls -F 查看目录中的文件 ls -l 显示文件和目录的详细资料 ls -a 显示隐藏文件 ls *[0-9]* 显示包含数字的文件名和目录名