【问题标题】:char **argv[] segfaults when trying to get input from the command linechar **argv[] 尝试从命令行获取输入时出现段错误
【发布时间】:2013-04-25 15:13:23
【问题描述】:

我正在尝试做最基本的事情,但正在碰壁。我正在尝试从命令行读取文件名以稍后在我的程序中使用,但我什至无法从 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] 以提取实际字符串时,我遇到了分段错误..

【问题讨论】:

标签: c++ input argv argc


【解决方案1】:
int main(int argc, char *argv[]){

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

但不是

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

【讨论】:

  • 感谢您澄清这一点,我不会注意到自己。现在工作正常。
【解决方案2】:

应该是:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-24
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 2020-12-12
    • 1970-01-01
    相关资源
    最近更新 更多