Ошибка сегментации при сортировке массива строк при использовании 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 ответ
Решение
Убедитесь, что вы разрешаете дополнительный байт для нулевого терминатора при работе со строками символов.