c - 按 '/' 拆分字符串失败,C

标签 c string split

<分区>

我想用'/'分割一个字符串并将字符串中的字符'/'更改为'/0',所以我写了一个这样的函数:

void parse_query(char* str){
    char* p = str;
    char** r = (char**)malloc(sizeof(char*)*5);
    int i = 0;
    r[i++] = p;
    while(p=strchr(p,'/')){
        *p = '/0';
        p++;
        r[i++] = p;
    }
}

当我运行如下程序时:

char* s = "a/b";
parse_query(s);

段错误发生在这一行:

*p = '/0';

谁能给我一个建议?

最佳答案

When I ran the program like below:

char* s = "a/b";

因此您正在修改字符串文字 "a/b",即 undefined behaviour 。如果你想修改它,那么使用这样的数组:

char s[] = "a/b";
parse_query(s);

此外,您应该这样做(如 AntonH 所述):

*p = '\0'; 

或者
*p = 0;

终止字符串。 '/0'不同于'\0'

关于c - 按 '/' 拆分字符串失败,C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24308193/

相关文章:

c - 将参数作为空指针传递给 OS-iii 中的新线程

c - 确保只将指针传递给可变参数函数

java - 自动转义引号

java - Apache POI 日期转字符串问题

angular - 无法读取 Angular 路由中未定义的属性 'split'

c - 需要一些关于 C 中树的解释

c - 指向结构的指针在传递给函数时根本不改变

string - 使用一些字符串形成给定模式的算法

D语言中的字符串拆分

c# - 如何拆分 mysql 命令;不包括拆分时;在顶点之间?