如何在C脚本中指定从命令行传递的文件名?

时间:2013-06-20 12:08:27

标签: c bash

给定一个命令行工具,我在命令行中使用这个工具:./tool img/file.png

如何将第一个参数赋给变量?我尝试了*argv[1]&argv[1]malloc(sizeof(argv[1])),但后来出现invalid initializer错误。我没有得到基本的C概念或者我被困在哪里?谢谢你的帮助!

int main(int argc, char ** argv) {

    char block1_arg_Filename[] = "img/file.png"; //that's how it works but I don't need it

    char block1_arg_Filename[] = argv[1]; // don't get it to work but that's how I need it

    [...]

    return 0;

}

3 个答案:

答案 0 :(得分:1)

首先,您应该通过选中argc来检查参数是否存在。如果您不能直接使用char *(您应该可以这样做),只需将其分配给argv[x]

答案 1 :(得分:1)

char* block1_arg_Filename = argv[1];

当然,在尝试之前请先检查argc > 1

答案 2 :(得分:0)

int main(int argc, char ** argv) {

    if (argc > 1) {
      char *str = argv[1];
      /** do some stuff **/
    }

    return 0;

}

试试这个