要求:指定目录路径做输入参数,打印输出该路径下所有文件的绝对路径使用非递归方式
知识点:
绝对路径由指定目录的绝对路径加上文件的相对路径得到
使用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 ;
}