Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   HOW TO SCAN MULTIPLE TIMES USING while()????? (http://www.go4expert.com/forums/scan-multiple-times-using-t26150/)

jose_peeterson 27Jun2011 19:12

HOW TO SCAN MULTIPLE TIMES USING while()?????
 
Code:

//hi experts,
  //              i can't get the following code to read in  multiple times after the
"more(y/n)" printout. it does not scan a second time it just exists the loop after just once
//can you please fix the bug in this simple program.

char op = 'y';

while(op == 'y')
 {   
  printf("Enter formula: ");
  scanf("%s",molecule);
 
  l = strlen(molecule);

  calc_weight(element,s,molecule,l);
 
 printf("More? (y/n) : "); // THIS DOES NOT WORK???
 scanf("%c",&op);      //      WHY???????

 }
 

return 0;   
   
}


shabbir 27Jun2011 21:30

Re: HOW TO SCAN MULTIPLE TIMES USING while()?????
 
Use fflush before the scanf and that should work.

priyatendulkar 28Jun2011 11:14

Re: HOW TO SCAN MULTIPLE TIMES USING while()?????
 
The issue is in scanf
scanf reads the input after enter/return key is pressed.But the newline generated by it is not consumed by scanf.Hence next time when scanf reads the input it reads newline instead of your input.

I tried using fflush on my Linux system..2.6.9-22.EL..But it doesnt seem to work

Alternative solution could be as under:
U can use scanf as
scanf("%c%*c",&op);
In this case scanf will read the newline and discard it

xpi0t0s 28Jun2011 17:32

Re: HOW TO SCAN MULTIPLE TIMES USING while()?????
 
scanf is a crap way of getting user input. Use fgets instead and parse the string.

jose_peeterson 4Jul2011 22:39

Re: HOW TO SCAN MULTIPLE TIMES USING while()?????
 
hi thanks for replies BUT priyatendulkers method reads a second time but when it reaches the condition in the while loop it fails and exits the loop even after typing y.
please help me
thanks

xpi0t0s 5Jul2011 10:49

Re: HOW TO SCAN MULTIPLE TIMES USING while()?????
 
After using fgets you can still use sscanf if you really want to. But writing parsing code yourself is better; user input is usually not rigidly formatted enough for the scanf family to handle it. You'll need to know about the family of functions that includes atoi() (ascii to integer).

priyatendulkar 5Jul2011 14:10

Re: HOW TO SCAN MULTIPLE TIMES USING while()?????
 
It fails as u might have not modified
scanf("%s",molecule);

Even here u'll need to consider the same

scanf("%s%*c",molecule);

Use the above method if u still wish to use scanf...

Else u can use fgets instead as suggested by xpi0t0s which would be a better approach


All times are GMT +5.5. The time now is 02:16.