【问题标题】:My Program do not take input from the scanf command我的程序不接受 scanf 命令的输入
【发布时间】:2019-11-03 17:12:02
【问题描述】:
#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 程序员。

【问题讨论】:

  • 编写这个问题的工作很棒。看到来自新贡献者的所有这些支持数据真是令人耳目一新!干杯。小事:你在 `printf("Das nachfolgende Zeichen lautet: %c und der ASCII-Wert ist: ", c+1, c+1);` 行中有一个额外的 c+1 或缺少替换参数跨度>
  • 请注意char c = getchar(); 将读取输入缓冲区中scanf("%d", &amp;a); 之后留下的换行符这是一个常见问题。
  • 函数返回的类型:getchar()int,不是char,所以代码中可以识别EOF条件

标签: c function output scanf getchar


【解决方案1】:

scanf 有一个有趣的属性,它将终止输入的换行符留在输入缓冲区中,因此您需要在继续任何其他输入之前使用它。

只需在您的scanf("%d", &amp;a); 之后添加一个getchar() 电话,您应该会很好。

【讨论】:

  • 非常感谢!这是错误:D
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    相关资源
    最近更新 更多