Сортировка слов по длине первого слова - C (СИ)
Формулировка задачи:
Хотелось бы понять, почему в нижнем цикле я ставлю || != '\n' вместо && != '\n' то проиходит ошибка сегментации в случае, когда строка состоит из символа и конца строки без пробелов. Правильно ли я понимаю, что в этом случае первое условие будет всегда выполняться и цикл будет бесконечным? Хотелось бы также узнать, есть ли менее сложные по времени алгоритмы.
void word_sort(char **a, int lim, int char_lim)
{
int i, j, l, k;
char *pt1;
char *pt2;
char * temp = (char*)malloc(char_lim * sizeof(char));
for(i = 0; i < lim; ++i)
{
for(j = lim - 1; j > i; --j)
{
for(l = 0; a[j][l] != ' ' && a[j][l] != '\n'; ++l)
{
continue;
}
for(k = 0; a[j-1][k] != ' ' && a[j-1][k] != '\n'; ++k)
{
continue;
}
printf("%d %d\n", l, k);
if(k > l)
{
strcpy(temp, a[j]);
strcpy(a[j],a[j-1]);
strcpy(a[j-1], temp);
}
l = k = 0;
}
}
}Решение задачи: «Сортировка слов по длине первого слова»
textual
Листинг программы
a[j-1][k] != ' ' && a[j-1][k] != '\n'