Сортировка слов по длине первого слова - 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'

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы