C - 将字符串拆分为字符串

时间:2021-02-03 20:56:13

标签: arrays c string pointers char

在下面的程序中,我尝试将字符串切割成单独的字符串。在我使用 strtok 的函数中,我有一个可调整的空格作为分隔符,但它不适用于所有内容 (\t)。是否可以设置更多分隔符?还是选择完全不同的分词方式?

int listOneDay(const char *src)
{
    char str[100000];
    strcpy(str,src);
    
    char **res = NULL;
    char *p = strtok(str, " ");
    int n_spaces =0;
    int i;
    
    while (p)
    {
        
        res = realloc(res, sizeof(char*)* ++n_spaces);
        
        if (res == NULL)
            exit(-1);
        
        res[n_spaces-1]=p;
        p=strtok (NULL," ");
    }   
    
    res = realloc(res,sizeof(char*)*(n_spaces+1));
    res[n_spaces]=0;
    
    for(i=0; i<(n_spaces) ; ++i)
        printf("%s\n",res[i]);
    
    free(res);

    return 1;
}      

int main ( void )
{ 
    const char * str1 =
    "2021-01-01 2021-7-1 \'Face masks\' \"Wear everywhere\"\t1/5/2021 \'March 5, 2021\' \"Face Masks\" \'Wear almost everywhere\'\n"
    "1/5/2021 \'March 5, 2021\' \"Face Masks\" \'Wear almost everywhere!\'\n"
    "10.1.2021 \'5.2.2021\' Lockdown \"Complete\"\n"
    "\'jan 2 2021\' \"JANUARY 15 2021\" lockdown \'Comlpete except dogwalking\'\n"
    "2021-1-20 2021-01-20 LOCKDOWN \'Between 9PM and 6AM\'\n";
    listOneDay(str1);
  
  return 0;
}

0 个答案:

没有答案