C файл решает задачу, затем выводит случайные символы в команде и сам вылетает - PullRequest
0 голосов
/ 02 мая 2020

Итак, моя задача - взять предложение и распечатать первое в алфавитном порядке. Например, ball car tshirt должен напечатать ball, что мне удалось сделать. Хитрость заключается в том, что когда два слова имеют одну и ту же первую букву, тогда следует провести большее сравнение Я сделал этот грязный алгоритм, который работает, но печатает случайные символы и вылетает из программы (скриншот ниже). Код

#include <stdio.h>
#include <stdlib.h>

int main()
{

    char str[100];
    char *p, *pz , *p1, *p2;

    printf("\nEnter sentence: ");
    fgets(str, 60, stdin);

    p=str;
    pz=p;

    while(*p!='\0'){
        if(*p == ' '){
            p++;
            if(*p<*pz){
                pz=p;
            }else if(*pz == *p){
                p1=p;   //temp
                p2=pz;  //temp
                p1++;
                p2++;
                while(*p2 != '\0' && *p1 != '\0'){

                    if (*p1 != '\0'){
                        pz=p;
                        break;
                    }else if(*p2 != '\0'){
                        break;
                    }else {
                        if(*p1 < *p2){
                            pz=p;
                            break;
                        }else{
                            p1++;
                            p2++;
                        }
                    }

                }
            }
        }
        p++;
    }



    while(*pz != ' '){
        printf("%c", *pz);
        pz++;
    }

    printf("\n");

    return 0;
}

указатель pz должен быть тем, который будет распечатан, указатель p - тот, который выполняет всю работу, а указатели p1 и p2 - временные.

The problem[1]

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