Ошибка сегментации при сортировке массива строк при использовании strcpy в коде c

Я пытаюсь отсортировать массив строк. Если я удалю строку

strcpy(a[j-1],a[j]);

Терминал не падает.

Массив строк размещается таким образом на случай, если возникнет проблема

array=(char **)malloc(sizeof(char *)*N);

    for(i=0;i<N;i++)
        array[i]=(char *)malloc(sizeof(char)*6);

Функция сортировки

void bubblesort1(char **a,int K)
{
    int i,j;
    char temp[6];

    for(i=1; i<K; i++)
        for(j=(K-1); j>=i; j--)
        {
            if(strcmp(a[j],a[j-1])>0)
            {
                strcpy(temp,a[j-1]);
                strcpy(a[j-1],a[j]);
                strcpy(a[j],temp);

            }

        }

}

Почему я получаю аварию?

1 ответ

Решение

Убедитесь, что вы разрешаете дополнительный байт для нулевого терминатора при работе со строками символов.

Другие вопросы по тегам