Я полный новичок с C, и у нас есть назначение в классе, чтобы взять заданный список строк, поместить их в массив строк и передать это пользовательской функции сортировки, которая печатает их в алфавитном порядке. Всякий раз, когда я запускаю свой код, он не дает ошибок компилятора, но он также аварийно завершается во время выполнения. Отладка дает мне ошибку сегментации, но она не дает мне определенной строки, которая вызвала это. Я запускаю свой код через gcc-компилятор, включенный в Dev C++. Вот мой код. Любая помощь будет оценена по достоинству. Я думаю, что моя проблема заключается в том, чтобы передать массив строк в функцию, но я не смог найти ответы на эту тему, которые я мог понять.Как передать массив строк в функцию в этой программе?
#include <stdio.h>
#include <string.h>
void sort(char *[]);
int main()
{
char *states[4] = {0};
states[0] = "Florida";
states[1] = "Oregon";
states[2] = "California";
states[3] = "Georgia";
sort(states);
return 0;
}
void sort(char *ptr[])
{
int i, j;
char temp[20];
for (i = 1; i <= 4; i++)
{
for (j = 1; j <= 4; j++)
{
if (strcmp(ptr[j-1], ptr[j]) > 0)
{
strcpy(temp, ptr[j-1]);
strcpy(ptr[j-1], ptr[j]);
strcpy(ptr[j], temp);
}
}
}
int x;
for (x = 0; x < 4; x++)
{
printf("%s", ptr[x]);
printf("\n");
}
}
Вы сортировки указатели, а не строки. См. Также [qsort] (http://pubs.opengroup.org/onlinepubs/009695399/functions/qsort.html) –
с этим 'j <= 4', тогда это' ptr [j] 'является проблемой. –
'char states [] []'? – moffeltje