【问题标题】:How split a string in c with comma如何用逗号分割c中的字符串
【发布时间】:2020-10-25 22:24:07
【问题描述】:

我创建了一个用逗号分割字符串的函数。

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

char splitted_line[8][50];

void split(char *line){
    
    printf("line 9\n");
    char *part = strtok(line, ",");
    printf("line 11\n");

    for(int i=1; i<8; i++){
        strcpy(splitted_line[i], part);
        printf("%s\n", splitted_line[i]);
        part = strtok(NULL, ",");
    }
}

int main(){
    char *line = "123,456,789";
    split(line);
    return 0;   
}

但是运行后的结果是:

line 9
Segmentation fault (core dumped)

似乎问题出在char *part = strtok(line, ",");,但我不知道那是什么。

【问题讨论】:

    标签: c string split


    【解决方案1】:

    strtok() 将直接修改传递的原始字符串。

    您不得修改字符串文字。

    char *line = "123,456,789";
    

    应该是可修改数组

    char line[] = "123,456,789";
    

    在做strcpy(splitted_line[i], part);之前不要忘记检查part是否不是NULL

    【讨论】:

    • 它有效,谢谢!但是我怎样才能以这种方式使用函数split("123,456,789");。它具有相同的结果Segmentation fault (core dumped)
    • 然后将传递的字符串复制到split 中,并将其用于strtok
    猜你喜欢
    • 2020-08-30
    • 1970-01-01
    • 2013-02-11
    • 2014-07-14
    • 2010-12-11
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多