char ** argv []在尝试从命令行获取输入时出现段错误
问题描述:
我正在尝试执行最基本的操作,并且遇到了一堵砖墙。我正在尝试从命令行读取文件名以便稍后在我的程序中使用,但我似乎甚至无法从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]拉出实际的字符串,我得到一个分段错误..
答
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
答
这应该是:什么是主要的合适声明]
int main(int argc, char *argv[])
^only one * here
的可能重复(http://stackoverflow.com/questions/4207134/what-is-the -proper-declaration-of-main) – 2013-05-01 15:36:48