c - 使用命令行中的值形成字符数组并将其传递给其他函数

标签 c arrays parameter-passing

我正在尝试从命令行读取一些数据,然后将其传递到字符数组以进行进一步处理。

#define former_array {"hello","world"}

void other_process(int argc, char *argv[])
{
    const char *arr[] = former_array;
}
int main(int argc, char *argv[])
{
    other_process(argc, argv);
}

原代码是静态编写的。我试图通过从命令行读取数据来重写它。所以我把它改为在 main 函数中添加这个词:

std::vector<const char*> former_array = {};

void other_process(int argc, char *argv[])
{
    const char *arr[] = former_array;
}

int main(int argc, char *argv[])
{
     former_array.push_back("hello");
     other_process(argc, argv);
}

但是我遇到了错误。 错误:初始化程序无法确定“former_array”的大小 const char *arr[] = previous_array;

错误:数组必须使用大括号括起来的初始值设定项进行初始化 const char *arr[] = previous_array;

我不想更改 const char *arr[] = previous_array; 的格式因为我需要 arr 进行其他过程。 知道如何解决这个问题吗? 谢谢。

最佳答案

您可以利用标准库并编写如下内容:

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>

int main(int argc, char *argv[])
{
    std::vector<std::string> args { "Previous..."};

    args.insert(args.end(), argv, argv + argc);
    // you can start from   ^^^^ argv + 1 if you don't need the program name    
    args.emplace_back("final.");

    std::copy(args.begin(), args.end(),
              std::ostream_iterator<std::string>(std::cout, "\n"));
}

关于c - 使用命令行中的值形成字符数组并将其传递给其他函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45194108/

相关文章:

c - pthread 的变量变化

c - 如何调用以结构体作为参数的函数?

javascript - 使用 lodash 从嵌套数组形式的开始和结束中删除元素

c - 如果有多种模式,我如何为模式编程?

c++ - 操作数的求值顺序

c++ - float 到整数的转换

java - 如何在 Java 中生成随机图像

c# - 使用 C# 在表单之间传递数据的最佳方式

c++ - 通过引用将整数类型的变量传递给函数会比通过值更有效吗?

c++ - 如何通过引用传递对象以供另一个文件使用