Ниже показана ошибка компилятора (компилятор Hackerrank c). Здесь указатель и начальный адрес блока памяти через malloc, который вводит строку во время выполнения. Может ли кто-нибудь мне помочь?
GDB trace:
Reading symbols from solution...done.
[New LWP 4659]
Core was generated by `solution'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 main () at solution.c:22
22 if ((a[i] != a[j]) && (i >= 0 && j < n)) {
#0 main () at solution.c:22
и мой код
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, k, i, j, mid;
char *a;
int *l;
a = (char *)malloc((n + 1) * sizeof(char));
scanf("%d", &n);
scanf("%d", &k);
scanf("%s", a);
mid = (0 + (n - 1)) / 2;
if (n % 2 == 0) {
i = mid;
j = mid + 1;
l = (int *)malloc((n / 2) * sizeof(int));
} else {
i = mid;
j = mid;
l = (int *)malloc((n / 2 + 1) * sizeof(int));
}
while (k != 0) {
if ((a[i] != a[j]) && (i >= 0 && j < n)) {
if (a[i] > a[j]) {
a[j] = a[i];
k--;
i--;
j++;
} else {
a[i] = a[j];
k--;
i--;
j++;
}
}
}
printf("%s", a);
}