Эта программа до сих пор имеет одну цель: взять два целых числа (размер пользовательских массивов), а затем по одному элементу или символу за раз и добавить их в массив.Как только оба массива заполнены, один из массивов должен быть в алфавитном порядке (я пытаюсь сделать это с помощью встроенного qsort).
Однако этот код обнаруживает ошибку времени выполнения после вызова qsort, и моя проблема в том, что я не знаю, почему или как это исправить.
Мой код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int toExit(int exit){
while(exit != 1 || exit !=2){
printf("\n\nPlease Choose:\n1) Exit\n2) Run program again\nYour choice: ");
scanf("%d", &exit);
printf("\n");
switch(exit){
case 1:
return exit;
case 2:
return exit;
default:
printf("That is not one of the given options.\n\n");
}
}
}
int compare(const void *a, const void *b){
const char* a1 = *(const char**)a;
const char* b1 = *(const char**)b;
return strcmp(a1,b1);
}
int main(void) {
int exit=0, i, j;
int lengthX, lengthA;
char *Xsequence, *Asequence, *_$;
while(exit != 1){
printf("please enter the length of sequence A: ");
scanf("%d", &lengthA);
printf("please enter the length of sequence X: ");
scanf("%d", &lengthX);
printf("\n"); //spacing, visual look of the program
Asequence =(char*) malloc(lengthA*sizeof(char));
Xsequence =(char*) malloc(lengthX*sizeof(char));
for(j=0;j<=lengthA-1;j++)
{
printf("Element %d of A: ",j+1);
scanf("%s", &Asequence[j]);
}
printf("Last Element of A (looking for \"$\"): ");
scanf("%s", &_$);
printf("\n"); //spacing, visual look of the program
for(j=0;j<=lengthX-1;j++)
{
printf("Element %d of X: ",j+1);
scanf("%s", &Xsequence[j]);
}
printf("Last Element of X (looking for \"$\"): ");
scanf("%s", &_$);
printf("\n"); //spacing, visual look of the program
qsort (Xsequence, lengthX, sizeof(char*), compare);
printf("The \"A\" sequence is: %s\n",Asequence);
printf("The \"X\" sequence is: %s\n",Xsequence);
exit = toExit(exit);
}
// return 0;
}