gpt4 book ai didi

c - 空终止字符指针

转载 作者:太空宇宙 更新时间:2023-11-04 03:04:45 24 4
gpt4 key购买 nike

我完全是 C 语言的新手。我正在尝试执行将拆分字符串(字符数组)的简单 C 函数。

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

做我遇到的功能显然很忙,主要是因为我缺乏 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 <stdlib.h>
#include <string.h>
#include <stdio.h>

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;
}

关于c - 空终止字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6920780/

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