c - 指向 char[] 的双指针

标签 c pointers casting

好的,所以我有以下代码:

char** args = (char**)malloc(10*sizeof(char*));
memset(args, 0, sizeof(char*)*10);

char* curToken = strtok(string, ";");

for (int z = 0; curToken != NULL; z++) {
    args[z] = strdup(curToken);
    curToken = strtok(NULL, ";")
}

我希望将每个 arg[z] 转换为一个字符数组——char string[100]——然后在我遵循的算法中进行处理。每个 arg[z] 都需要在某个时候转换为变量字符串。我对指针感到困惑,但我正在慢慢地变得更好。

编辑:

char string[100] = "ls ; date ; ls";

arg[0] 将是 ls,arg[1] 将是日期,arg[2] 将是 ls 之后以上代码。

我想把每个参数放回 char string[100] 并通过算法处理它。

最佳答案

一种最简单的方法是在某个临时变量中保留原始字符串的备份。

char string[100] = "ls ; date ; ls"; 
char temp_str[100] = {0};
strcpy (temp_str, string);

另一种方法是通过strcat 来实现。 z 有agruments的数量。

memset(string, '\0', 100);
for (i = 0; i < z; i++)
{
    strcat(string, args[i]);
    if (i != (z - 1))
    {
        //if it is last string dont append semicolon
        strcat(string, ";");
    }
}

注意:注意边界条件检查

关于c - 指向 char[] 的双指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11104051/

相关文章:

c - sprintf(target, source) 与 sprintf(target, "%s", source) 具有不同的行为;

c - 使用C语言进行图形化(GCC编译器)

c++ - 从指向基类型的指针 vector ,返回派生类型的第一个元素,转换为派生类型

c++ - 错误 : Expression must have (Pointer-to-) function type

c - C 中的类型转换和类型安全

c++ - 根据C++模板类型调用不同的C函数

c - 返回 z < 0 是什么? z + y : z mean?

c++ - 指向二维数组的指针

c# - 如何确定枚举值的表示类型?

java - java中类型转换时出错