首页 > 解决方案 > 我不明白为什么会出现分段错误错误

问题描述

char* reverse(char s[]){

    int i, j;
    char t;

    for(i = 0, j = strlen(s) - 1; i < j; i++, j--){
        t = s[i];
        s[i] = s[j];
        s[j] = t;
    }

return s;
}

int myPrefix (char s1 [], char s2 []) {

    int i;
    int comp = 0;

    for(i = 0; s1[i] != '\0' && s2[i] != '\0'; i++){
        if(s1[i] != s2[i])
            return comp;
        else
            comp++;
    }
    return comp;
}

int mySuffix (char s1 [], char s2 []) {

    return myPrefix(reverse(s1), reverse(s2));
}

我正在解决我的 Uni 提供的一些代码板挑战,但我坚持这一点。我应该创建一个函数来比较 2 个字符串并返回共同的最大后缀。

当我在代码板中编译和运行时,出现分段错误错误,但是代码在 Clion 中运行良好。

为什么会这样?

编辑:你们中的一些人评论说我没有提供调用该函数的代码。那是因为我无权访问它。

这是代码板中的挑战

编辑2:我让它工作了。正如你们中的一些人所说,我可能不允许修改字符串。谢谢您的帮助。

int mySuffix (char s1 [], char s2 []){

    int i = strlen(s1) - 1;
    int j = strlen(s2) - 1;
    int count = 0;

    for(; s1[i] == s2[j]; i--, j--){
        count++;
    }

    return count;
}

标签: csegmentation-fault

解决方案


推荐阅读