[英]How can I pass a directory name as an argument and output a list of files in it?
#include <dirent.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
DIR *d;
struct dirent *dir;
d = opendir(".");
if (d) {
while ((dir = readdir(d)) != NULL) {
printf("%s\n", dir->d_name);
}
closedir(d);
}
return(0);
}
這個程序應該得到一個目錄名作為參數。 我有一段工作代碼可以打印目錄中的文件名。 但是如何在這里傳遞目錄名稱?
您應該從命令行獲取full path
作為程序的參數。 在您的代碼的main
function 中,有兩個參數: int argc
& char* argv[]
int argc
表示您的程序在執行時收到的 arguments 的數量。 程序的名稱本身就是一個參數。
例如,在./a.out argument1 argument2
中, a.out
程序的argc
將等於 3。
char* argv[]
是一個char*
數組,所有這些都指向一個參數。
在前面的示例中, argv[0] == 'a.out'
, argv[1] == 'argument1'
和argv[2] == 'argument2'
現在更改您的代碼如下:
#include <dirent.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
DIR *d;
struct dirent *dir;
if(argc==2){
char* path = argv[1];
d = opendir(path);
if (d) {
while ((dir = readdir(d)) != NULL) {
printf("%s\n", dir->d_name);
}
closedir(d);
}
return(0);
}else{
printf("Wrong number of arguments");
return 1;
}
}
然后你應該按如下方式調用程序:
./name_of_the_program /path/to/the/dir
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.