Пузырьковая сортировка строк в верхнем и нижнем регистре букв - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь отсортировать мой 2d массив.Достигнув этой точки, я получаю утечки памяти:

te = word[i];
word[i] = word[i+1];

Достигнув этой точки, я получаю ошибку сегмента:

   word[i+1]=te;

Я пытался использовать strcpy для копированиястроки, но я все еще получаю ошибку ошибки сегмента, когда использую ее тоже.

void word_sorter(char** word,int numWord){

        int i =0;
        int j =0;
        for(i = 0; i < numWord; i++){

            for(j = 0; word[i][j] != '\0'; j++){


                        if(word[i][j]>= 'A' && word[i][j] <= 'Z'){

                                 char *te;
                                te =(char*)calloc(10000,sizeof(char));
                                te = word[i];
                                word[i] = word[i+1];
                                word[i+1]=te;



                        }



               }

        }

}

Я пытаюсь отсортировать строки так, чтобы заглавные буквы имели приоритет над строчными буквами

INPUT: aand AAnd Aand
OUTPUT:AAnd Aand aand

1 Ответ

0 голосов
/ 17 февраля 2019

Вы выделяете память и присваиваете этот адрес te, а затем немедленно перезаписываете это значение с помощью te = word[i].Это приведет к утечке памяти, возвращенной calloc.

word[i+1] получит доступ после конца массива на последней итерации цикла i, когда i == numWord - 1.Это источник вашей ошибки сегментации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...