c语言吧字符串“AAAAAAA,BBBBBBBBB”吧他从字符串分开,分别存在两个字符串数组中
时间: 2024-12-23 12:26:02 浏览: 1
java正则表达式替换字符串
在C语言中,你可以使用`strtok()`函数来分割字符串,并将其内容存储到两个不同的字符串数组中。这里是一个示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STR_LENGTH 100
#define NUM_PAIRS 2
void split_string(char *input_str, char **output_array, size_t *output_lengths) {
char *token = strtok(input_str, ",");
int index = 0;
while (token != NULL && index < NUM_PAIRS) {
output_array[index] = (char *)malloc(strlen(token) + 1);
strncpy(output_array[index], token, strlen(token));
output_array[index][strlen(token)] = '\0'; // 添加字符串结束符'\0'
*output_lengths[index++] = strlen(token);
token = strtok(NULL, ",");
}
}
int main() {
char input[] = "AAAAAAA,BBBBBBBBB";
char *output_array[NUM_PAIRS];
size_t output_lengths[NUM_PAIRS];
split_string(input, output_array, output_lengths);
for (int i = 0; i < NUM_PAIRS; i++) {
printf("String %d: %s\n", i+1, output_array[i]);
}
// 释放动态分配的内存
for (int i = 0; i < NUM_PAIRS; i++) {
free(output_array[i]);
}
return 0;
}
```
这段代码首先通过`strtok()`把原始字符串按照逗号分割成多个子字符串,然后依次存储到`output_array`数组中,同时记录每个字符串的长度到`output_lengths`数组里。最后,在`main`函数中打印出结果并释放分配的内存。
注意:`strtok()`会改变原始字符串,所以在实际应用中可能需要复制一份原始字符串以便多次使用。
阅读全文