Я хочу зациклить этот код, пока пользователь не захочет - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь запустить эту программу, пока пользователь не захочет, но не сможет.

Я пытался использовать цикл do-while, но не смог достичь желаемого результата

float water_level;
char command;

do{
    printf("Enter the water level sensor readout in meters : \n");
    scanf("%f",&water_level);

    printf("The water level is: %f \n",water_level);

    if(water_level <= 0.5)
    {
        printf("The output valve is turned OFF \n");
    }
    else
         printf("The output valve is turned ON \n");

    if(water_level < 3.0)
        {
           printf("The water pump is turned ON \n");
        }
    else
        printf("The water pump is turned OFF \n");

    printf("Do you want to run the program Again? \n Type y or n \n");
    command = scanf("%c",&command);

    } while(command == 'y');

}

1 Ответ

2 голосов
/ 03 апреля 2019

scanf("%c",&command); возвращает 1, если вы читаете символ, 0 в конце файла, поэтому это не может быть 'y'

предупреждение также с новой строкой, которую вы будете читать, используя char за char (без пробела перед % c в формате)

вы можете сделать:

char command[4];

do{
    ...
    printf("Do you want to run the program Again? \n Type y or n \n");
    if (scanf("%3s",command) != 1) {
      /* EOF */
      break;
    } 
} while(*command == 'y');

Как вы можете видеть в scanf Я ограничиваю длину строки чтения до 3 (разрешая да / нет в случае ;-)), что позволяет не рисковать записывать из команда размером 3 + 1 для запоминания нулевого символа.

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