Вы действительно должны опубликовать свой код, но здесь идет.Начните с:
#include <stdio.h>
#include <dirent.h>
int main (int c, char *v[]) {
int len;
struct dirent *pDirent;
DIR *pDir;
if (c < 2) {
printf ("Usage: testprog <dirname>\n");
return 1;
}
pDir = opendir (v[1]);
if (pDir == NULL) {
printf ("Cannot open directory '%s'\n", v[1]);
return 1;
}
while ((pDirent = readdir(pDir)) != NULL) {
printf ("[%s]\n", pDirent->d_name);
}
closedir (pDir);
return 0;
}
В вашем случае необходимо проверить, что args[1]
одновременно установлено и относится к фактическому каталогу.Когда это выполняется с:
testprog tmp
(tmp
- это подкаталог моего текущего каталога, но вы можете использовать любой допустимый каталог), я получаю:
[.]
[..]
[file1.txt]
[file1_file1.txt]
[file2.avi]
[file2_file2.avi]
[file3.b.txt]
[file3_file3.b.txt]
Обратите внимание, что выЯ должен передать каталог , а не файл. Когда я выполняю:
testprog tmp/file1.txt
, я получаю:
Cannot open directory 'tmp/file1.txt'
, потому что этофайл, а не каталог (если вы подлый, вы можете попытаться использовать diropen(dirname(v[1]))
, если начальный diropen
не пройден).