您的位置:首页 > 其它

列出指定目录下的所有文件的绝对路径

2014-06-14 15:31 543 查看
要求:指定目录路径做输入参数,打印输出该路径下所有文件的绝对路径使用非递归方式

知识点:

绝对路径由指定目录的绝对路径加上文件的相对路径得到

使用sprintf()创建绝对路径int sprintf( char *buffer, const char *format, [ argument] … )

buffer:char型指针,指向将要写入的字符串的缓冲区。

format:格式化字符串。

[argument]...:可选参数,可以是任何类型的数据。

返回值:字符串长度(strlen)

代码:

#include<stdio.h>

#include<stdlib.h>

#include<sys/stat.h>

#include<unistd.h>

#include<errno.h>

#include<dirent.h>

#include<sys/types.h>

#define SIZE 1024

int main(int argc,char*argv[])

{

struct stat buf;

DIR* dir;

struct dirent *dirent;

int res;

char fullpath[SIZE];

if(argc!=2)

{

printf("参数不正确!正确格式:./main filepath\n");

exit(1);

}

stat(argv[1],&buf);

res=buf.st_mode&S_IFDIR;

if(res==S_IFDIR)

{

printf("%s为目录\n",argv[1]);

}

else

{

printf("%s不是目录\n",argv[1]);

exit(1);

}

dir=opendir(argv[1]);

printf("%s目录下文件绝对路径:\n",argv[1]);

while(dirent=readdir(dir))

{

if((strcmp(dirent->d_name, ".") == 0) || (strcmp(dirent->d_name, "..") == 0))

{

continue;

}

sprintf(fullpath,"%s/%s",argv[1],dirent->d_name);

printf("%s\n",fullpath);

}

closedir(dir);

return 0 ;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: