gpt4 book ai didi

c++ - 将* argv []中的偶数/奇数元素添加到数组

转载 作者:行者123 更新时间:2023-12-01 14:39:14 26 4
gpt4 key购买 nike

我是C++的新手,我正在制作一个简单的程序,该程序将值和单位作为系统参数并将它们全部转换为单个单位。命令行执行和输入如下所示:

./unit_conv 3 feet 5 inches centimeters

值和单位之间用空格隔开,最后一个参数是我想将所有内容转换为的单位。

我获取输入的方法是在最后一个元素之前将* argv []的所有偶数元素添加到一个称为“值”的整数数组中,并将所有奇数元素添加到一个称为“单位”的字符指针数组中。以下是我尝试的实现:
if (argc % 2 == 0) {
char * desiredUnit = argv[argc - 1];
int values[argc];
char * units[argc];

int j;
int k;
for (int i = 1; i < argc; i++) {
if (i % 2 == 1) {
values[j] = atoi(argv[i]);
j++;
}
else {
units[k] = argv[i];
k++
}
}
}

通过上面提到的执行,我得到以下信息:
Segmentation fault (core dumped)

我知道段错误正在我的for循环中发生。不过,我没有看到程序是如何尝试访问受限内存的。我已经坚持了很长时间。

希望我提供了足够的信息,但是如果我的问题太模糊,请告诉我。

谢谢!

最佳答案

您是否尝试过使用STL?

std::vector<std::string> units{};
std::vector<int> values{};

for (std::size_t i {1}; i < argc; ++i) {
if (i % 2 == 0) {
units.push_back(std::string{argv[i]});
} else {
values.push_back(std::atoi(argv[i]));
}
}

关于c++ - 将* argv []中的偶数/奇数元素添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62353151/

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