首页 > 解决方案 > 我的程序不接受 scanf 命令的输入

问题描述

#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一切正常。如果这对您有帮助,我会说我是中级 c 程序员的初学者。

标签: cfunctionoutputscanfgetchar

解决方案


您可以通过使用来解决问题,scanf(" %c",&c);或者您需要再写 1 个 getchar() 来使用剩下的换行符scanf("%d", &a);


推荐阅读