2013-05-01 65 views
1

我正在嘗試執行最基本的操作,並且遇到了一堵磚牆。我正在嘗試從命令行讀取文件名以便稍後在我的程序中使用,但我似乎甚至無法從argv []中提取名稱。這裏的代碼:char ** argv []在嘗試從命令行獲取輸入時出現段錯誤

#include <iostream> 
#include <string.h> 

using namespace std; 

int main(int argc, char **argv[]){ 
    cout << "argc = " << argc << "\n\n"; 
    cout << "Filename: " << argv[1] << "\n"; 
    return 0; 
} 

我測試它的輸入提供了一個參數當然,因爲沒有錯誤檢查。下面是我得到的,當我運行程序:

./a.out testfilename 

*

argc = 2 

Filename: 0x7fff56e41d30 

現在我明白的argv [1]是一個指向字符數組,所以這個輸出是有道理的。不過,如果我做如下改變,

cout << "Filename: " << argv[1] << "\n"; 

cout << "Filename: " << *argv[1] << "\n"; 

試圖取消引用的argv [1]拉出實際的字符串,我得到一個分段錯誤..

+0

的可能重複(http://stackoverflow.com/questions/4207134/what-is-the -proper-declaration-of-main) – 2013-05-01 15:36:48

回答

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

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

BU牛逼不

int main(int argc, char **argv[]){ 
+0

非常感謝你的支持,不會注意到我自己。現在工作正常。 – 2013-05-01 15:37:06

0

這應該是:什麼是主要的合適聲明]

int main(int argc, char *argv[]) 
         ^only one * here 
相關問題