日期:2011-06-15 16:21:00 来源:本站整理
Linux下显示某一目录下文件名列表的C程序[Linux安全]
本文“Linux下显示某一目录下文件名列表的C程序[Linux安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
以下是一个Linux/Unix下显示某一目录下文件列表的C程序,相当于最基本
的ls号令的功效,显示的内容报告该目录下的子目录以及文件名:
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char *argv[])
{
DIR *dp;
struct dirent *dirp;
int n=0;
if(argc != 2)
{
printf("a single argument is required ");
exit(0);
}
if((dp=opendir(argv[1])) == NULL)
printf("can't open %s", argv[1]);
while(((dirp=readdir(dp)) != NULL) && (n<=50))
{
if(n % 1 == 0) printf(" ");
n++;
printf("%10s", dirp->d_name);
}
printf(" ");
closedir(dp);
exit(0);
}
假如只是显示该目录下的子目录名,则需求利用以下程序(此中还包含了
一个关于子目录名的冒泡排序):
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char *argv[])
{
DIR *dp;
struct dirent *dirp;
struct stat buf;
char tempDirName[100];
char dirNames[100][100];
int n=0, i=0, j=0, dirCount = 0;
if(argc != 2)
{
printf("a single argument is required ");
exit(0);
}
strcat(tempDirName, argv[1]);
if((dp=opendir(argv[1]))==NULL)
printf("can't open %s", argv[1]);
while(((dirp=readdir(dp))!=NULL) && (n<=50))
{
n++;
strcpy(tempDirName, "");
strcat(tempDirName, argv[1]);
strcat(tempDirName, dirp->d_name);
if(IsDirectory(tempDirName))
{
strcpy(dirNames[dirCount], dirp->d_name);
dirCount++;
}
}
printf(" ");
for(j=0; j<dirCount; j++)
{
for(i=0; i<dirCount; i++)
if(strcmp(dirNames[i], dirNames[i+1]) > 0)
{
strcpy(tempDirName, dirNames[i]);
strcpy(dirNames[i], dirNames[i+1]);
strcpy(dirNames[i+1], tempDirName);
}
}
for(i=0; i<dirCount; ++i)
printf(" %s", dirNames[i]);
printf(" ");
closedir(dp);
exit(0);
}
int IsDirectory(const char *dirname)
{
struct stat sDir;
if(stat(dirName, &sDir) < 0)
return 0;
if(S_IFDIR == (sDir.st_mode & S_IFMT))
return 1;
return 0;
以上是“Linux下显示某一目录下文件名列表的C程序[Linux安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论