求助!linux下的c语言高手请进

lyrebird 2002-12-23 04:39:31
小弟现遇一问题:我想顺序读出一个目录下的所有文件,该怎样写代码?由于我不知道该目录下文件的文件名,有什么办法么?请高手指教,谢谢各位啦!!
...全文
51 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyrebird 2002-12-24
  • 打赏
  • 举报
回复
看了yczs()的提示问题解决了,谢谢各位了
yczs 2002-12-24
  • 打赏
  • 举报
回复
man 3 scandir

man 3 alphasort

自己去查吧 今天我太累了

要是要例子告诉我 晚上给你写个
wwwunix 2002-12-23
  • 打赏
  • 举报
回复
建议你用链表结构。
lyrebird 2002-12-23
  • 打赏
  • 举报
回复
谢谢各位的回答,其实我是想把某个目录下的所有文件一一读出其中的内容,所以用system不太方便。我还想问一下,当我知道目录的其中一个文件名后,有什么办法能读出它的前一个文件的名字并付给变量么?(文件名均为数字)。我知道是可以用数组赋值来实现,可如果那个目录有100个文件则数组也会很大很麻烦,所以不知道还有没有其他办法?麻烦有谁知道的指点小弟一下,再次感谢
ari 2002-12-23
  • 打赏
  • 举报
回复
popen("ls -1 *", "r");
足够了。
A0110A 2002-12-23
  • 打赏
  • 举报
回复
不知道你的顺序是正序还是反序,
用系统调用最好,简单可靠!!
如system,popen,...
详man一下!
davidchen1219 2002-12-23
  • 打赏
  • 举报
回复
void printdir(char *dir, int depth)
{
DIR *dp;
struct dirent *entry;
struct stat statbuf;

if((dp=opendir(dir))==NULL){
fprintf(stderr,"cannot open directory: %s\n",dir);
return;
}

chdir(dir);
while((entry=readdir(dp))!=NULL){
lstat(entry->d_name,&statbuf);
if(S_ISDIR(statbuf.st_mode)){
/* found a dirent, but ignore , and .. */
if(strcmp(".",entry->d_name)==0||
strcmp("..",entry->d_name)==0)
continue;
printf("%*s%s/\n",depth,"",entry->d_name);

/* Recurse at a new indent level */
printdir(entry->d_name,depth+4);
}
else
printf("%*s%s\n",depth,"",entry->d_name);
}
chdir("..");
closedir(dp);
}



int main(int argc, char * argv[])
{
char *topdir=".";
if(argc>=2)
topdir=argv[1];

printf("Directory scan of %s \n",topdir);
printdir(topdir,0);
printf("done. \n");

exit(0);
}
痞子酷 2002-12-23
  • 打赏
  • 举报
回复
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>

void scandir(char *dirname)
{
DIR *dir;
struct dirent *ent;

printf("First pass on '%s':\n",dirname);
if ((dir = opendir(dirname)) == NULL)
{
perror("Unable to open directory");
exit(1);
}
while ((ent = readdir(dir)) != NULL)
printf("%s\n",ent->d_name);

printf("Second pass on '%s':\n",dirname);

rewinddir(dir);
while ((ent = readdir(dir)) != NULL)
printf("%s\n",ent->d_name);
if (closedir(dir) != 0)
perror("Unable to close directory");
}

void main(int argc,char *argv[])
{
if (argc != 2)
{
printf("usage: opendir dirname\n");
exit(1);
}
scandir(argv[1]);
exit(0);
}
snjsj 2002-12-23
  • 打赏
  • 举报
回复
在这方面还不如直接用shell。

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧