gpt4 book ai didi

c - 从 C 字符串构建参数列表

转载 作者:太空狗 更新时间:2023-10-29 11:20:15 24 4
gpt4 key购买 nike

我不喜欢重新发明轮子。

是否有标准或 Linux 特定函数来转换 C 样式字符串 (char*)到像传递到 main 中那样的 char** 样式的字符串格式数组?

即给出:

const char* s = "-n file -m -o output"

将其动态转换为:

char** args = { "-n", "file", "-m", "-o", "output", 0 };

像这样的函数:

char** build_arg_array(const char* cmd_line); 

编辑:感谢您的回复。看起来还没有一个一步函数可以完成上述操作。

最佳答案

这并不难:

char **split(char *input, char splitChar, int *outCount)
{
int inputLen = (int) strlen(input);
int numberOfArguments = 1;

for (int i = 0; i < inputLen; i++)
{
if (input[i] == splitChar)
numberOfArguments++;
}

*outCount = numberOfArguments;
char **output = malloc(sizeof(char *) * numberOfArguments);

int startOfArg = 0;
int outputIndex = 0;

for (int i = 0; i < inputLen; i++)
{
if (input[i] == splitChar)
{
int argLen = i - startOfArg;
output[outputIndex] = malloc(sizeof(char) * argLen + 1);
strncpy(output[outputIndex], input + startOfArg, argLen);
output[outputIndex][argLen] = 0;

startOfArg = i + 1;
outputIndex++;
}
}

// append the last argument
int argLen = inputLen - startOfArg;
output[outputIndex] = malloc(sizeof(char) * argLen + 1);
strncpy(output[outputIndex], input + startOfArg, argLen);
output[outputIndex][argLen] = 0;

return output;
}

关于c - 从 C 字符串构建参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9283840/

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