我正在嘗試執行最基本的操作,並且遇到了一堵磚牆。我正在嘗試從命令行讀取文件名以便稍後在我的程序中使用,但我似乎甚至無法從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]拉出實際的字符串,我得到一個分段錯誤..
的可能重複(http://stackoverflow.com/questions/4207134/what-is-the -proper-declaration-of-main) – 2013-05-01 15:36:48