Моя программа не принимает ввод от команды scanf - PullRequest
0 голосов
/ 03 ноября 2019
#include <stdio.h>

void aeins(){

    int x;
    unsigned int y;
    double z;

    printf("Geben sie einen ganze Zahl ein: ");
    scanf("%d", &x);
    printf("Geben sie eine natürliche Zahl ein: ");
    scanf("%u", &y);
    printf("Geben sie eine reelle Zahl ein: ");
    scanf("%lf", &z);

    printf("Die dritte Potenz von %d ist %d", x, x*x*x);
    printf("Die dritte Potenz von %u ist %u", y, y*y*y);
    printf("Die dritte Potenz von %lf ist %lf", z, z*z*z);

}

void azwei(){

    printf("Geben sie einen Character ein: ");
    char c = getchar();
    printf("Das nachfolgende Zeichen lautet: %c und der ASCII-Wert ist: ", c+1, c+1);

}

int main (void){

    int a;
    int b = 1;

    while(b){
        printf("Welche Aufgabe soll gezeigt werden? ");
        printf("\n(1) Aufgabe 1 \n(2) Aufgabe 2\n");
        scanf("%d", &a);

        switch(a){
            case 1: aeins();
                    b = 0; break;
            case 2: azwei();
                    b = 0; break;
            default: printf("Falsche Eingabe!\n"); break;
        }
    }
}

Это моя Программа, и это мой вывод:

Welche Aufgabe soll gezeigt werden?
(1) Aufgabe 1
(2) Aufgabe 2
2
Geben sie einen Character ein: Das nachfolgende Zeichen lautet:  und der ASCII-Wert ist:
Process returned 0 (0x0)   execution time : 2.172 s
Press any key to continue.

Как вы можете видеть, моя программа игнорирует команду getchar. Я пробовал это с командой scanf, но это тоже не сработает. В функции aeins все работает. Я бы сказал, что я начинающий программист среднего уровня, если это поможет вам.

Ответы [ 2 ]

2 голосов
/ 03 ноября 2019

Вы можете решить проблему с помощью scanf(" %c",&c); или вам нужно написать еще 1 getchar (), чтобы использовать символ новой строки, оставшийся от scanf("%d", &a);

2 голосов
/ 03 ноября 2019

scanf обладает интересным свойством, заключающимся в том, что он оставляет символ новой строки, завершивший ввод во входном буфере, поэтому вам необходимо использовать его перед тем, как перейти к любому другому вводу.

Просто добавьте вызов getchar()после твоего scanf("%d", &a); и тебе должно быть хорошо.

...