Code: #include <stdio.h> int main() { int letter; printf("Vyber si + alebo - alebo * alebo 2(druha mocnina): "); letter = getchar(); if(letter == '+'){ float sucet, citatel, menovatel; printf("Zadaj scitanec: "); scanf("%g", &citatel); printf("Zadaj scitanec: "); scanf("%g", &menovatel); sucet = citatel + menovatel; printf("Vysledok je: %g\n", sucet); return 0; } else if(letter == '-'){ float rozdiel, odcitatel, odcitanec; printf("Zadaj odcitatel: "); scanf("%g", &odcitatel); printf("Zadaj odcitanec: "); scanf("%g", &odcitanec); rozdiel = odcitatel - odcitanec; printf("Vysledok je %g\n", rozdiel); return 0; } else if(letter == '*'){ float nasobok1, nasobok2, sucin; printf("Zadaj prvy nasobok: "); scanf("%g", &nasobok1); printf("Zadaj druhy nasobok: "); scanf("%g", &nasobok2); sucin = nasobok1 * nasobok2; printf("Vysledok je %g\n", sucin); return 0; } [COLOR=Red]else if(letter == '2'){ int hovno; printf("Chcete vediet konkretnu mocninu(2) alebo tabulku od x po 100?(t) "); hovno = getchar(); if(hovno == 't'){ printf("\nsi pako\n"); return 0; } else if(hovno == '5'){ float mocnitel, vysledok; printf("Zadaj mocnitel: "); scanf("%g", &mocnitel); vysledok = mocnitel * mocnitel; printf("Vysledok je %g\n", vysledok); return 0; }[/COLOR] return 0; } else { printf("Zadaj jeden zo znakov ktore su napisane vo vete!!\n"); } } I'm writing this C calc and I wanted to do something like this: You get a possibility to select + or - or * or 2(power of 2). And then I started to write code that when you press 2, then you have posibillity to again select something. But this I cannot do(program doesn't give me any possibility and it just continue to printf). I've been looking over Internet but I cannot find anything about my problem. Red marked code is probably the problem
You need to put the flushing statement before the getchar() I dont remember the exact name of the function but its probably is fflush(stdin);
fflush (stdin) will work with some compilers and not others. Use rewind (stdin). Stdio.h covers it. You are courting more crashes and endless looping by using scanf without testing it's return. Check your scanf docs for how to check the return to see if you actually scanned AND CONVERTED all items which you requested.
I've solved the problem. Before hovno = getchar(); should be getchar(); so it should look like this: getchar(); hovno = getchar(); But anyway thanks for help and sorry for duplication.
That solution will work if there's only ONE extra char in the buffer. Your user (who may not be you) may pound a few extras in there. You want to get them all with rewind.
My apologies, use what works, then. I'm going on the usual cause of failures because I can't actually read what the user is supposed to be doing.
See your other post for a basic description of C/C++ input. Given that, and a thorough understanding of what you are asking your user to do and asking your code to do may help you solve your problem. If you translated your prompts into English and described what you actually want, and described the conditions under which your program fails, I could probably help you out. I apologize for not being able to do that, thus far.