2017-02-18 43 views
0

一個文件名作爲兩個命令行參數我想發送一個二維數組和文件名作爲命令行參數的大小在C.整數和用C

int main(int argc,char *argv[]) 

我知道這適用於單個參數,但我如何接受兩個論點?

+0

它應該爲多個參數工作,argc將有計數,argv是一個值的數組。 –

+0

你有沒有檢查http://stackoverflow.com/questions/13156514/passing-two-dimensional-array-to-c-using-command-line –

回答

2
  • argc告訴你參數的數量。
  • argv是一個指向c風格字符串的char指針數組。

所以,你可以通過簡單地打印所有參數:

int main(int argc, char *argv[]) 
{ 
    int i; 
    for (i=0; i<argc; ++i) 
    { 
     printf("%s\n", argv[i]); 
    } 
} 

您可以使用atoi爲字符串(初始部分)轉換爲整數。

所以,你可以這樣做:

int main(int argc,char *argv[]) 
{ 
    char filename[100]; 
    int size = 0; 
    int i; 
    if (argc < 3) 
    { 
     printf("Too few arguments\n"); 
     return 0; 
    } 
    if (strlen(argv[1]) >= 100) 
    { 
     printf("File name too long\n"); 
     return 0; 
    } 
    strcpy(filename, argv[1]); 
    size = atoi(argv[2]); 
    if (size <= 0) 
    { 
     printf("Invalid size\n"); 
     return 0; 
    } 

    .... 
    .... 

    return 0; 
} 

注意,它通常是沒有必要的文件名參數複製到另一個變量,除非你打算以某種方式修改數值。

+1

也可以使用'strtol()'進行整數轉換。提供錯誤檢查,而'atoi()'不。 – RoadRunner