C-拆分字符串

C-拆分字符串,c,string,split,C,String,Split,在C语言中有没有预定义的函数可以在给定delimeter的情况下拆分字符串?假设我有一个字符串: "Command:Context" 现在,我想将“命令”和“上下文”存储到二维字符数组中 char ch[2][10]; 或两个不同的变量 char ch1[10], ch2[10]; 我试着使用一个循环,效果很好。我只是好奇是否已经存在这样的功能,我不想重新发明轮子。请提供一个清晰的例子,非常感谢 您可以使用 : #include <stdio.h> #include <

在C语言中有没有预定义的函数可以在给定delimeter的情况下拆分字符串?假设我有一个字符串:

"Command:Context"
现在,我想将“命令”和“上下文”存储到二维字符数组中

char ch[2][10]; 
或两个不同的变量

char ch1[10], ch2[10];
我试着使用一个循环,效果很好。我只是好奇是否已经存在这样的功能,我不想重新发明轮子。请提供一个清晰的例子,非常感谢

您可以使用

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

int main ()
{
    char str[] ="Command:Context";
    char * pch;
    printf ("Splitting string \"%s\" into tokens:\n",str);
    pch = strtok (str,":");
    while (pch != NULL)
    {
        printf ("%s\n",pch);
        pch = strtok (NULL, ":");
    }
    return 0;
}
你可以用

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

int main ()
{
    char str[] ="Command:Context";
    char * pch;
    printf ("Splitting string \"%s\" into tokens:\n",str);
    pch = strtok (str,":");
    while (pch != NULL)
    {
        printf ("%s\n",pch);
        pch = strtok (NULL, ":");
    }
    return 0;
}

您可以根据以下示例使用
strtok
标记字符串:

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

int main (void) {
    char instr[] = "Command:Context";
    char words[2][10];
    char *chptr;
    int idx = 0;

    chptr = strtok (instr, ":");
    while (chptr != NULL) {
        strcpy (words[idx++], chptr);
        chptr = strtok (NULL, ":");
    }

    printf ("Word1 = [%s]\n", words[0]);
    printf ("Word2 = [%s]\n", words[1]);

    return 0;
}

strtok
函数有一些您可能需要注意的小问题。主要是,它修改字符串本身以编织其魔力,因此不会对字符串文字(例如)起作用。

您可以根据以下示例使用
strtok
标记字符串:

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

int main (void) {
    char instr[] = "Command:Context";
    char words[2][10];
    char *chptr;
    int idx = 0;

    chptr = strtok (instr, ":");
    while (chptr != NULL) {
        strcpy (words[idx++], chptr);
        chptr = strtok (NULL, ":");
    }

    printf ("Word1 = [%s]\n", words[0]);
    printf ("Word2 = [%s]\n", words[1]);

    return 0;
}

strtok
函数有一些您可能需要注意的小问题。首先,它修改字符串本身来编织它的魔力,这样就不能处理字符串文字(例如)。

本文中没有示例。请指导我:(+1用于在线演示…先生,如果字符串是“命令上下文”,它仍然给我“命令”和“上下文”,而不是“命令上下文”…本文中没有示例。请指导我:(+1用于在线演示…先生,如果字符串是“命令上下文”,它仍然给我“命令”和“上下文”,而不是“命令上下文”。。。