簡體   English   中英

如何將目錄名稱作為參數傳遞並 output 傳遞其中的文件列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM