Пытаюсь написать простую программу для сканирования ввода и либо сохранить его, либо программу, но здесь я упираюсь в стену - PullRequest
0 голосов
/ 09 мая 2020

Пытаясь написать программу для работы с треугольником, пользователь вводит информацию в формате P0 xy, P1 xy ... но если пользователь вводит Q, программа завершается. Я понимаю, что функция scanf будет использоваться вместе с операторами if else с логическими операторами, однако я не уверен, как это сделать. sh это.

Когда я запускаю код и набираю 'Q', он все равно просит еще 2 подсказки. Я думал об использовании строкового массива, но не знал, как это сделать, и предложения были бы замечательными, спасибо.

#include <stdio.h>

void main()
{
    float x, y;
    char Q, input;

    scanf("%c %f %f", &input, &x, &y);

    if (input == 'Q')
        return;
    else
        printf("points are %f %f", x, y);

    return(0);
}

Ответы [ 2 ]

2 голосов
/ 09 мая 2020

Поскольку у вас есть 3 оператора форматирования в строке формата, scanf() не вернется, пока не заполнит все 3 переменные или не получит ошибку или EOF.

Вызов scanf() дважды. Один раз для символа, а затем для чисел, если символ не Q.

#include <stdio.h>

void main()
{
    float x, y;
    char input;

    scanf(" %c", &input);

    if (input == 'Q') {
        return;
    }

    scanf("%f %f", &x, &y);
    printf("points are %f %f", x, y);

    return;
}

Когда вы превращаете это в al oop, который считывает несколько входов, убедитесь, что вы поставили пробел перед %c, поэтому он будет пропускать пробелы перед чтением символа. В противном случае он будет анализировать новую строку после последнего ввода y. См. Программа не останавливается на строке scanf ("% c", & ch), почему?

0 голосов
/ 09 мая 2020

В дополнение к другому ответу вы также можете проверить наличие символа «q» вместе с «Q».

попробовать if (input == 'Q' || input =='q')

...