Ошибка сегментации gcc - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, уважаемы) Пытаюсь реализовать шифр Плейфера. Компилируется нормально, но при запуске выдает "Ошибка сегментирования". Попробовал вывести отдельно массив mas... таже история... видимо проблема в нем. Что я делаю не так? Подскажите пожалуйста.
#include <stdio.h>
#include <ctype.h>
#include <string.h>
 
int i,j,k,l,m,n;
char mas[5][5] = {'N','I','K','O','L','A','Y','B','C','D','E','F','G','H','J','M','P','R','S','T','U','V','W','X','Z'};
char str[] = "BLABLABLABLABLABLA";
 
typedef struct {
    int i;
    int j;
} t_id;
 
t_id search(char z) {
t_id ret;
    for (i=0;i<5;i++){
        for (j=0;j<5;j++){
            if (z==mas[i][j]) break;
        }
    }
    ret.i=i;
    ret.j=j;
    return ret;
}
 
void pleyfer() {
t_id a,b;
    for(k=0;k<18;k++){
        a = search(str[k]);
        k++;
        b = search(str[k]);
        if (a.i==b.i){
            a.j=(a.j+1)%5;
            b.j=(b.j+1)%5;
        }
        if (a.j==b.j){
            a.i=(a.i+1)%5;
            b.i=(b.i+1)%5;
        }
        if (a.i!=b.i && a.i!=b.i){
            a.i = a.i^b.i;
            b.i = a.i^b.i;
            a.i = a.i^b.i;
        }
    printf("%s%s",mas[a.i][a.j],mas[b.i][b.j]);
    }
}
 
int main() {
    pleyfer();
    return 0;
}

Решение задачи: «Ошибка сегментации gcc»

textual
Листинг программы
printf("%c%c",mas[a.i][a.j],mas[b.i][b.j]);

Объяснение кода листинга программы

Код представлен в виде одного предложения и содержит следующие элементы:

  1. printf - функция для вывода информации на экран.
  2. %c%c - спецификатор формата для вывода символов.
  3. mas[a.i][a.j] - обращение к элементу массива по индексам a.i и a.j.
  4. mas[b.i][b.j] - обращение к элементу массива по индексам b.i и b.j. Для более подробного объяснения необходимо знать контекст, в котором используется данный код.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5