c语言怎么分割字符串

在C语言中,字符串是由字符组成的数组,分割字符串是将一个字符串拆分成多个子字符串的过程,在C语言中,可以使用以下几种方法来分割字符串:

c语言怎么分割字符串
(图片来源网络,侵删)

1、使用strtok()函数

strtok()函数是C语言中的一个内置函数,用于将字符串分割成多个子字符串,它的原型如下:

char *strtok(char *str, const char *delim);

参数:

str:要分割的字符串。

delim:分隔符字符串。

返回值:

返回指向第一个子字符串的指针,如果已到达字符串末尾,则返回NULL。

示例代码:

#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "Hello,World!How are you?";
    char delim[] = " ";
    char *token;
    // 使用strtok()函数分割字符串
    token = strtok(str, delim);
    while (token != NULL) {
        printf("%s
", token);
        token = strtok(NULL, delim);
    }
    return 0;
}

2、使用sscanf()函数和%s格式说明符

sscanf()函数是C语言中的一个内置函数,用于从字符串中读取格式化的数据,可以使用它来分割字符串,示例代码:

#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "Hello,World!How are you?";
    char delim[] = " ";
    char *token;
    int i = 0;
    // 使用sscanf()函数分割字符串
    while (sscanf(str + i, "%s", &token) == 1) {
        printf("%s
", token);
        i += strlen(token) + 1; // 更新指针位置,跳过分隔符和空字符
    }
    return 0;
}

3、使用自定义函数实现分割字符串

除了使用内置函数外,还可以自己编写一个函数来实现字符串分割,示例代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
char **split(const char *str, const char *delim, int *count) {
    char **result = malloc(sizeof(char *) * (strlen(str) / strlen(delim) + 2)); // 分配内存,加1是为了处理最后一个子字符串后面没有分隔符的情况
    assert(result != NULL); // 如果内存分配失败,程序会在这里终止执行
    *count = 0; // 初始化计数器为0
    char *token = strtok(str, delim); // 使用strtok()函数分割字符串,获取第一个子字符串的指针
    while (token != NULL) { // 如果还有子字符串,继续处理下一个子字符串
        result[*count] = malloc(strlen(token) + 1); // 分配内存,加1是为了存储空字符'