cat scandir.c
#include<stdio.h>
#include<stdlib.h>
#include<dirent.h>
int main()
{
char *str = "./";
char *dir_name;
int n;
struct dirent **entries = NULL;
asprintf(&dir_name, "%s", str);
n = scandir(dir_name, &entries, 0, alphasort);
{
if (n >= 0) {
int i;
for(i = 0; i < n; i++) {
char *filename;
asprintf(&filename, "%s/%s", dir_name, entries[i]->d_name);
printf("%s\n", entries[i]->d_name);
free(filename);
free(entries[i]);
}
}
}
free(dir_name);
return 0;
}
syli@lishengyu-pc:~/work/tmp$ gcc -D_GNU_SOURCE scandir.c
syli@lishengyu-pc:~/work/tmp$ ./a.out
.
..
a.c
a.out
aaa.conf
bbb.conf
scandir.c
对比目录下的文件:
syli@lishengyu-pc:~/work/tmp$ ls -al
总用量 36
drwxr-xr-x 2 syli syli 4096 5月 31 19:59 .
drwxr-xr-x 6 syli syli 4096 5月 27 21:27 ..
-rw-r--r-- 1 syli syli 0 5月 24 21:39 aaa.conf
-rw-r--r-- 1 syli syli 794 5月 31 19:42 a.c
-rwxr-xr-x 1 syli syli 16624 5月 31 19:59 a.out
-rw-r--r-- 1 syli syli 0 5月 24 21:39 bbb.conf
-rw-r--r-- 1 syli syli 503 5月 31 19:59 scandir.c