我目前正在使用最初設計爲接受參數的代碼示例,然後在當前目錄中搜索該參數,試圖使其搜索另一個目錄(/ dev/shm確切)替換「。」用「/ dev/shm」,但是當我搜索某些東西*(注意通配符)時,代碼什麼也沒有變。通配符搜索在當前目錄中工作正常,所以我不認爲這是通配符問題,如果有人能夠幫助我,儘管我會很感激,謝謝!如何獲取此readdir代碼示例以搜索其他目錄
#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
static void lookup(const char *arg)
{
DIR *dirp;
struct dirent *dp;
if ((dirp = opendir(".")) == NULL) {
perror("couldn't open '.'");
return;
}
do {
errno = 0;
if ((dp = readdir(dirp)) != NULL) {
if (strcmp(dp->d_name, arg) != 0)
continue;
(void) printf("found %s\n", arg);
(void) closedir(dirp);
return;
}
} while (dp != NULL);
if (errno != 0)
perror("error reading directory");
else
(void) printf("failed to find %s\n", arg);
(void) closedir(dirp);
return;
}
int main(int argc, char *argv[])
{
int i;
for (i = 1; i < argc; i++)
lookup(argv[i]);
return (0);
}
題外話:你不必在函數調用前寫'(void)'。 –
@Eitan - (void)可以通過老版本的lint。OP從readdir手冊頁發佈了一個例子。和。好的代碼應該檢查每個調用的返回碼,甚至printf。 –
@jimmcnamara我相信有或沒有'(void)'編譯器本質上是做同樣的事情。通過放入'(void)',你僅僅會讓你更加明顯地認爲你丟棄了返回值。我從來沒有見過這種「風格」。 –