Я не понимаю, почему я получаю ошибку ошибки сегментации - PullRequest
1 голос
/ 02 марта 2020
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;
}
...