• 全部
  • 系统维护与使用
  • 应用程序开发
  • 内核源代码
  • 驱动程序开发
  • CPU和硬件区
  • UNIX文化
  • Solaris
  • Power Linux
  • 问答

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

lyrebird 2002-12-23 04:39:31
小弟现遇一问题:我想顺序读出一个目录下的所有文件,该怎样写代码?由于我不知道该目录下文件的文件名,有什么办法么?请高手指教,谢谢各位啦!!
...全文
12 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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。
回复
相关推荐
发帖
Linux/Unix社区
创建于2007-08-27

2.0w+

社区成员

Linux/Unix社区 应用程序开发区
申请成为版主
帖子事件
创建了帖子
2002-12-23 04:39
社区公告
暂无公告