的过程如下:
下面是一个示例代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char** generateTokenArray(const char* str, const char* delim, int* tokenCount) {
char* copyStr = strdup(str); // 复制原字符串,以免修改原字符串
char* token = strtok(copyStr, delim);
char** tokenArray = NULL;
int count = 0;
while (token != NULL) {
count++;
tokenArray = (char**)realloc(tokenArray, count * sizeof(char*));
tokenArray[count - 1] = strdup(token);
token = strtok(NULL, delim);
}
*tokenCount = count;
free(copyStr);
return tokenArray;
}
int main() {
const char* str = "Hello,World,How,Are,You";
const char* delim = ",";
int tokenCount = 0;
char** tokens = generateTokenArray(str, delim, &tokenCount);
printf("Token Count: %d\n", tokenCount);
for (int i = 0; i < tokenCount; i++) {
printf("Token %d: %s\n", i + 1, tokens[i]);
free(tokens[i]);
}
free(tokens);
return 0;
}
这段代码将字符串"Hello,World,How,Are,You"按逗号分割成多个标记,并将标记存储在动态分配的指针数组中。最后,打印出每个标记的内容。
注意:在使用完动态分配的内存后,需要使用free函数释放内存,以避免内存泄漏。
领取专属 10元无门槛券
手把手带您无忧上云