Kann ich kein C mehr? fehler mit scanf

    • Kann ich kein C mehr? fehler mit scanf

      Hallo!

      Also ich wollte einem Kollegen C beibringen aber ich habe ein problem

      immer wenn ich
      scanf("%d", &zahl); eingebe und danach
      scanf("%c", &zeichen); eingeben überspringt er das einlesen.

      Umgedreht funktioniert alles.

      Das problem ist aber wenn ich schreibe

      do
      {
      scanf("%c", &zeichen);
      // rest
      scanf("%d", zahl);
      }while(...);
      dann überspringt er wieder das einlesen..

      Was mach ich falsch? Ist der Tastaturpuffer bei so wenigen scanfs schon voll?

      Verwende Microsoft Visual Studio 2008 Express
      James
      [Blockierte Grafik: http://dl.dropbox.com/u/24753690/stuff/forenlinks/rocketsign.png]
      Team Rocket - so schnell wie das Licht,
      gebt lieber auf und bekämpft uns nicht!

      join #teamrocket @iz-smart.net
    • Wahrscheinlich bekommst du bei dem Zeichen das '\n' im Buffer zurück. Versuch mal den Buffer vollständig auszulesen bevor du scanf machst:

      Quellcode

      1. #include <stdio.h>
      2. #define BUF_SIZE 1024
      3. void clear (FILE *fp)
      4. {
      5. char buf[BUF_SIZE];
      6. while (fgets (buf, BUF_SIZE, fp) != NULL && feof (fp)) {
      7. /* puts (buf); */
      8. }
      9. }
      10. int main(int argc, char const* argv[])
      11. {
      12. int num;
      13. char c;
      14. scanf ("%d", &num);
      15. printf ("num: %d\n", num);
      16. fflush (stdin);
      17. clear (stdin);
      18. scanf ("%c", &c);
      19. printf ("sign: %c\n", c);
      20. fflush (stdin);
      21. clear (stdin);
      22. scanf ("%c", &c);
      23. printf ("sign: %c\n", c);
      24. return 0;
      25. }
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Nax ()