我正在尝试做最基本的事情并且正在撞墙。我试图从命令行读取文件名以便稍后在我的程序中使用,但我甚至无法从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 :(得分:5)
int main(int argc, char *argv[]){
或
int main(int argc, char **argv){
但不是
int main(int argc, char **argv[]){
答案 1 :(得分:0)
应该是:
int main(int argc, char *argv[])
^ only one * here