尝试从命令行获取输入时出现char**argv[]segfault



我正在努力做最基本的事情,结果碰壁了。我正试图从命令行读取一个文件名,以便稍后在程序中使用,但我似乎甚至无法从argv[]中提取该名称。这是代码:

#include <iostream>
#include <string.h>
using namespace std;
int main(int argc, char **argv[]){
    cout << "argc = " << argc << "nn";
    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){

但不是

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

应该是:

int main(int argc, char *argv[])
                        ^ only one * here

最新更新