好的,所以我有以下代码:
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/