在C语言中,将字符串转换为数组的方法有多种,主要包括:使用strtok
函数、手动遍历字符串以及使用正则表达式。 其中,strtok
函数是最常用的方式之一,它可以根据指定的分隔符将字符串拆分成若干子字符串,并存储在数组中。以下内容将详细介绍这些方法以及它们的应用场景。
一、使用strtok
函数
strtok
函数是C标准库中的一个函数,用于将字符串拆分为一系列子字符串。它的基本用法是通过指定的分隔符,将字符串分割成若干部分。
1.1 基本用法
strtok
函数的基本用法如下:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, world, welcome, to, C, programming";
char *token;
// 获取第一个子字符串
token = strtok(str, ", ");
// 持续获取其他子字符串
while (token != NULL) {
printf("%sn", token);
token = strtok(NULL, ", ");
}
return 0;
}
在这个例子中,strtok
函数使用逗号和空格作为分隔符,将字符串拆分为多个子字符串,并逐一打印出来。strtok
函数在第一次调用时需要传递原始字符串指针,之后每次调用都传递NULL
,以继续在同一个字符串中进行分割。
1.2 存储子字符串到数组
如果需要将拆分后的子字符串存储到数组中,可以这样做:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, world, welcome, to, C, programming";
char *token;
char *array[10]; // 假设我们最多拆分成10个子字符串
int i = 0;
token = strtok(str, ", ");
while (token != NULL) {
array[i++] = token;
token = strtok(NULL, ", ");
}
// 打印数组中的子字符串
for (int j = 0; j < i; j++) {
printf("%sn", array[j]);
}
return 0;
}
在这个例子中,我们使用一个指针数组array
来存储每个子字符串的指针。
二、手动遍历字符串
有时候我们可能需要更灵活的方式来拆分字符串,这时候可以考虑手动遍历字符串。
2.1 基本实现
下面是一个简单的手动遍历字符串的例子:
#include <stdio.h>
#include <string.h>
void split(char *str, char sep, char array[][20], int *size) {
int i = 0, j = 0, k = 0;
while (str[i] != '