c - 如何在 C 中将 char* 拆分为子字符串?

标签 c string split char substring

我有这样一段文字:

char* str="Hi all.\nMy name is Matteo.\n\nHow are you?"

我想将字符串按“\n\n”拆分成这样的数组:

char* array[3];
array[0]="Hi all.\nMy name is Matteo."
array[1]="How are you?"
array[2]=NULL

我试过 strtok 函数,但它没有正确拆分字符串。

最佳答案

#include <stdio.h>
#include <string.h>

int main(){
    char *str="Hi all.\nMy name is Matteo.\n\nHow are you?";
    char *array[3];
    char *ptop, *pend;
    char wk[1024];//char *wk=malloc(sizeof(char)*(strlen(str)+3));
    int i, size = sizeof(array)/sizeof(char*);
/*
array[0]="Hi all.\nMy name is Matteo."
array[1]="How are you?"
array[2]=NULL
*/
    strcpy(wk, str);
    strcat(wk, "\n\n");
    for(i=0, ptop=wk;i<size;++i){
        if(NULL!=(pend=strstr(ptop, "\n\n"))){
            *pend='\0';
            array[i]=strdup(ptop);
            ptop=pend+2;
        } else {
            array[i]=NULL;
            break;
        }
    }
    for(i = 0;i<size;++i)
        printf("array[%d]=\"%s\"\n", i, array[i]);
    return 0;
}

关于c - 如何在 C 中将 char* 拆分为子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15990680/

相关文章:

java - 如何使用java中的split在空行上分割字符串?

java - 如何根据更改的字符而不是单个分隔符来拆分字符串?

c - 如何关联一组可变长度变量?

交叉编译。设置搜索库的最后位置

c - 打印c字符串指针

python - 如何在 Python 中获取字符串的子字符串?

c - 以字符串为返回类型的函数

c - 客户端/服务器程序中的线程

c++ - Ncurses后台等待退出

java - 时间戳字符串分割获取日期和时间的有效方法