Использование функции, если, если условие истинно, не работает? - PullRequest
0 голосов
/ 27 сентября 2019

Я хочу, чтобы, когда пользователь вводит e, он запускал мою функцию с именем enter и сканировал значения, но все, что я получаю, это VECRQ?:, почему это так?Я неправильно вызвал функцию?

Я попытался использовать цикл while для 1, а не menuoption != 'q', и он не работал.Я думал, что если menuoption не равно 'q', то цикл будет работать до тех пор, пока пользователь не введет 'q', чтобы закрыть программу.

#include <stdio.h>

int enter(int measurments[], int nrOfmeasurments)
{
    while(nrOfmeasurments<10) 
    {
        printf("Enter measurment #%d (or q to quit): ",nrOfmeasurments+1);
        int oneMeasurment;
        int readInteger = scanf("%d",&oneMeasurment);
        if(readInteger)
        {
            measurments[nrOfmeasurments] = oneMeasurment;
            nrOfmeasurments ++;
            //return nrOfmeasurments;
        }
        else
        {
            char tmp;
            scanf(" %c",&tmp);
            break;
        }

    }
    if(nrOfmeasurments==10)
    {
        printf("Array is full\n");
    }

    return nrOfmeasurments;
}

int main(void)
{
    int measurments[10];
    int nrOfmeasurments;
    char menuoption;
    printf("Measurment tool 2.0\n");

    while (menuoption != 'q')
    {
        printf("VECRQ?:\n");
        scanf(" %c",&menuoption);

        if (menuoption == 'e')
        {
            //int MeasurmentData[10];
            //int nrOfmeasurments;
            //enter(measurments, nrOfmeasurments);
            nrOfmeasurments = enter(measurments, nrOfmeasurments);
        }
        else if(menuoption == 'v')
        {

        }
        else if(menuoption == 'c')
        {

        }
        else if(menuoption == 'q')
        {
            printf("Exiting Measurment tool 2.0\n");
            break;
        }

    }
}

1 Ответ

1 голос
/ 27 сентября 2019

Не забудьте инициализировать ваши переменные значениями по умолчанию.Ваша проблема в том, что nrOfmeasurments не инициализирован и имеет некоторое значение мусора.Кроме того, установите значение по умолчанию menuoption для некоторого не q символа, чтобы быть уверенным, что ваш цикл будет выполнен хотя бы один раз

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