gpt4 book ai didi

C - char scanf问题

转载 作者:行者123 更新时间:2023-11-30 16:52:12 25 4
gpt4 key购买 nike

我不知道为什么代码

scanf("%c",&eingabe);

每次都会重叠。

我也用 getchar 尝试过,但又出现同样的问题。

我使用linux,但使用xterm执行代码。

有人可以帮助我吗?

#include <stdio.h>
#include <stdlib.h>

int main()
{
int z1,z2,erg=0;
char eingabe;

while(1){


printf("Geben Sie die erste Zahl an: ");
scanf("%d",&z1); //works
fflush(stdin); //clear

printf("\nGeben Sie die zweite Zahl an: ");
scanf("%d",&z2); //works
fflush(stdin);//clear

erg=z1*z2; //works
printf("\n%d * %d = %d",z1,z2,erg); //works

printf("\n");
printf("#######################");
printf("\n");

printf("Weiter = W\n");
printf("Stop = P\n");

printf("Eingabe: ");
scanf("%c",&eingabe); //this is the line with the problem
fflush(stdin); //clear

switch(eingabe){
case 'w':
system("clear");
break;
case 'p':
system("exit");
break;
default:
printf("\nEingabe Unbekannt");
}

printf("\n");

}


return 0;
}

最佳答案

  1. 正如 @UrbiJr 正确提到的,解决方案是排除换行符。为此,您还可以使用 getchar()。我用 getchar() 运行了你的代码,它可以工作,我也有一台 Linux 机器,使用 GCC 编译并在 GNOME 终端中运行二进制文件。
  2. 此外,假设您想在键入字符“p”时退出程序,您确定 case 'p': system("exit"); 在您的计算机上有效吗?它对我不起作用,所以我使用了 case 'p': exit(EXIT_SUCCESS); 相反,它起作用了。

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    int z1,z2,erg=0;
    char buf;
    char eingabe;

    while(1)
    {
    printf("Geben Sie die erste Zahl an: ");
    scanf("%d",&z1); //works
    getchar();

    printf("\nGeben Sie die zweite Zahl an: ");
    scanf("%d",&z2); //works
    getchar();

    erg=z1*z2; //works
    printf("\n%d * %d = %d",z1,z2,erg); //works

    printf("\n");
    printf("#######################");
    printf("\n");

    printf("Weiter = W\n");
    printf("Stop = P\n");

    printf("Eingabe: ");
    scanf("%c",&eingabe); //works

    switch(eingabe){
    case 'w':
    system("clear");
    break;
    case 'p':
    exit(EXIT_SUCCESS);
    break;
    default:
    printf("\nEingabe Unbekannt");
    }

    printf("\n");

    }
    return 0;
    }

关于C - char scanf问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41353930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com