First of all there will be ==
comparison operator rather than =
assignment operator in the if
condition in this code.
while(c = getchar()){
if(c = '\n') break;
if(c = '1') Add();
if(c = '2') getInput(); // this is where the headache starts
....
}
And for stop taking input try EOF
which from keyboard can be given by prssing CTRL+D
.
EDIT : The problem is with the \n
which is actually taken as input when you press ENTER
key on the key board. So change just one line of code.
if (c ==
\n) break;
to if (c == EOF ) break;
and as I said EOF
is the end of input.
Then your code will work fine.
Flow of code :
step 1: suppose `2` is input
step 2: getInput() is called
step 3: suppose `1` as input // in getInput
step 4: doSomething() is called // from getInput
step 5: After completion of doSomething again come back to while loop ,
but in your case you have already given `\n` character as an input
when you pressed `1` and `ENTER`.And thus loop terminates.
but after changing the code as I said , this should work.
NOTE: To understand code flow and for debugging purposes it's best practice to put printf()
in various places in functions and see the output as which lines are executing and which are not.