Я не знаю, почему код
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 = Wn");
printf("Stop = Pn");
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;
}
Как сказал @codaddict здесь,
Простое решение состоит в том, чтобы исключить символ новой строки, как это:
Или замена
int
sscanf
s чем-то вроде этого:scanf("%d%*c",&n);
,ИМЕННО ТАКОЙ ОБРАЗ:
И это мой друг!
getchar()
.Я запустил ваш код,
getchar()
и он работает, у меня тоже есть машина Linux, скомпилированная с помощью GCC и запустила двоичный файл в gnome Terminal.Кроме того, предполагая, что вы хотите выйти из программы при вводе символа ‘p’, вы уверены
case 'p': system("exit");
, что работает на вашей машине? Это не сработало для меня, поэтому я использовалcase 'p': exit(EXIT_SUCCESS);
вместо этого, и это сработало.Это приводит к тому, что ваша программа получит ‘\n’ («Enter» или «newline» от предыдущего ввода) в качестве ввода. Итак, поставьте » getchar ();» перед «scanf(«%c»,&eingabe);».