Ошибка сегментации 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]);
Объяснение кода листинга программы
Код представлен в виде одного предложения и содержит следующие элементы:
printf- функция для вывода информации на экран.%c%c- спецификатор формата для вывода символов.mas[a.i][a.j]- обращение к элементу массива по индексамa.iиa.j.mas[b.i][b.j]- обращение к элементу массива по индексамb.iиb.j. Для более подробного объяснения необходимо знать контекст, в котором используется данный код.