2013-06-20 55 views
0

給定一個命令行工具,我在命令行中使用這樣的:./tool img/file.png如何在C腳本中分配從命令行傳遞的文件名?

如何將第一個參數分配給一個變量?我試過*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; 

} 
+1

什麼是 「C劇本」? – glglgl

+0

@glglgl直接糾正我,如果這是你問題的purpsose :) – Steven

+0

&最好不要使用'char ** argv'。使用'char * argv []'。 – anishsane

回答

1
char* block1_arg_Filename = argv[1]; 

當然,在嘗試此操作之前請檢查argc > 1

+0

感謝您的快速回復,但仍然是相同的錯誤...一些線條下來我將它傳遞給一個函數,其中顯示警告:'從不兼容的指針類型傳遞參數1的cvLoadImage。我只使用const char時出現「invalid initializer」錯誤,並且沒有發出警告。我會感激任何進一步的想法:) – Steven

+0

阿格...抱歉,忘了擺脫「[]」謝謝! – Steven

1

首先,您應該檢查argc是否存在參數。如果您不能直接使用argv[x](您應該可以這樣做),只需將其分配給char *即可。

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

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

    return 0; 

} 

試試這個

+0

如果你嘗試使用這個'if'模式,並且有多個參數,你會有一段糟糕的時間。 –

相關問題