2017-02-18 41 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