2013-05-01 85 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 
相关问题