当vscode运行你的程序时,它会使用在名为launch.json
的文件中找到的参数来运行程序。
如果你转到:运行
-> 打开配置
,那么就会打开该项目的launch.json
。默认情况下,它看起来像这样:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "enter program name, for example ${workspaceFolder}/a.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
如果你将鼠标悬停在 args
上,它会告诉你:"传递给程序的命令行参数。"
与其在程序启动后尝试修改 argv,不如尝试将你想要的参数放在那里,看看是否像它所说的那样将这些参数传递给你的程序。
argv
赋值。看起来你想要在命令行没有提供参数时使用默认值。为此,检查argc == 1
并使用一些硬编码的默认值。不要给argv
赋值。 - NicholasMargv[1]
。在这种情况下,没有存储空间。您可以这样做:提供存储空间,即分配一个数组char *argv_[] = { argv[0], "arg1", "arg2", nullptr };
,然后将argc = 3; argv = argv_;
。 - Scheff's Cat