空终止字符指针

我完全是C的新手。我正在尝试做一个简单的C函数,它将拆分字符串(char数组)。

以下代码无法正常工作,因为我不知道如何终止数组中的char数组。 在函数中传递了char指针。 一个包含要拆分的原始常量char数组,另一个指针是多维数组,它将每个拆分部分存储在单独的char数组中。

做我遇到的function显然有很多喧嚣,主要是由于我缺乏C经验。

我认为在这个函数中我无法实现的是使用’\ 0’终止单个数组。 这是代码:

void splitNameCode(char *code, char *output); void splitNameCode(char *code, char *output){ int OS = 0; //output string number int loop; size_t s = 1; for (loop = 0; code[loop]; loop++){ if (code[loop] == ':'){ output[OS] = '\0'; // I want to terminate each array in the array OS ++; }else { if (!output[OS]) { strncpy(&output[OS], &code[loop], s); }else { strncat(&output[OS], &code[loop], s); } } } } int main (int argc, const char * argv[]) { char output[3][15]; char str[] = "andy:james:john:amy"; splitNameCode(str, *output); for (int loop = 0; loop<4; loop++) { printf("%s\n", output[loop]); } return 0; } 

这是一个适合您的工作计划。 如果您需要任何解释,请告诉我。

 #include  #include  #include  void splitNameCode(char *code, char **output) { int i = 0; char* token = strtok(code, ":"); while (token != NULL) { output[i++] = token; token = strtok(NULL, ":"); } } int main (int argc, const char *argv[]) { char* output[4]; char input[] = "andy:james:john:amy"; splitNameCode(input, output); for (int i = 0; i < 4; i++) { printf("%s\n", output[i]); } return 0; } 

如果我理解你的意图正确,你试图采取像andy:james:john:amy这样的字符串andy:james:john:amy并且到达andy\0james\0john\0amy 。 如果是这种情况,那么您的代码可以大大简化:

 void splitNameCode(char *code, char *output){ int loop; strncpy(code, output, strlen(code)); for (loop = 0; output[loop]; loop++){ if (output[loop] == ':'){ output[loop] = '\0'; // I want to terminate each array in the array } } }