gpt4 book ai didi

c++ - Cerr 不工作

转载 作者:行者123 更新时间:2023-11-28 00:14:03 27 4
gpt4 key购买 nike

我写了一个函数,它从命令行获取两个数字并将其相乘,如果 argc 不是 3,它应该输出一个 cerr 行;但是它不起作用。我做错了什么吗?

#include <iostream>
#include <cstdlib>
using namespace std;

int main(int argc, char *argv[])
{
int product;
int first_num = atoi(argv[1]);
int second_num = atoi(argv[2]);
product = first_num * second_num;
if(argc != 3)
{
cerr << "Usage: ./multiply first_num second_num" << endl;
exit(1);
}
else
{
cout << product << endl;
}
}

打印出的不是 cerr,而是 zsh: segmentation fault ./multiply。

最佳答案

如果你没有给你的程序传递任何参数,argv[1] 是一个空指针并且 argv[2] 不存在,你不允许访问该索引。所以你不想尝试将它传递给 atoi()。先检查,然后查看 argv[1]/argv[2] 中的内容,前提是您确定它们确实存在。

 if(argc != 3)
{
cerr << "Usage: ./multiply first_num second_num" << endl;
exit(1);
}
else
{
int product;
int first_num = atoi(argv[1]);
int second_num = atoi(argv[2]);
product = first_num * second_num;
cout << product << endl;
}

关于c++ - Cerr 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31483416/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com