我想通過使用stat
來檢查給定的參數是否是目錄。該程序需要2個參數:當第一個參數不是目錄或它不存在代碼工作正常。爲什麼stat會返回錯誤的結果?
但是,當第一個參數是一個目錄並存在,並且第二個參數不存在時,程序會說它們都存在 - 錯誤的結果。我想知道爲什麼它不起作用。
#include <stdio.h>
#include <sys/stat.h>
int main(int n, char **argv)
{
char *dir_1=argv[1], *dir_2=argv[2];
if (is_dir(dir_1) == 0)
printf("Directory %s exists.\n", dir_1);
else
printf("Directory %s does not exist.\n", dir_1);
if (is_dir(dir_2) == 0)
printf("Directory %s exists.\n", dir_2);
else
printf("Directory %s does not exist.\n", dir_2);
}
int is_dir(char *file)
{
struct stat file_stat;
stat(file, &file_stat);
return((S_ISDIR(file_stat.st_mode)) ? 0 : -1);
}
由於使用功能的前*預計*輸出,你應該檢查它的返回值,看看它是否曾在所有。 –
如果函數只被調用一次,那麼它總是正常工作。但是當我調用它兩次時,它在所有情況下都不會返回預期值。 – user3140972
您沒有'is_dir'的函數原型,所以編譯器假定您傳遞了一個'int'參數。也許這就是爲什麼它行事不端。啓用並記下所有編譯器警告。 –