Was bedeuten die Werte ?



  • #include <stdio.h>
    #include <ctype.h>
    
    #define MAX 20
    
    int getch(void);
    void ungetch(int);
    int getint(int *pn);
    
    int main(int argc, char* argv[])
    {
      char Eingabe[MAX];
      int x;
      for(x=0; x <= (MAX-1); x++)
          Eingabe[x] = ' ';
      gets(Eingabe);
      getint(Eingabe);
      for(x = 0; x <= (MAX-1); x++)
      {
        printf("%d",Eingabe[x]);
      }
    return 0;
    }
    
    int getint(int *pn)
    {
      int c, sign;
      while (isspace (c = getch()))
      ;
      if (!isdigit(c) && c != EOF && c != '+' && c != '-')
      {
        ungetch(c);
        return 0;
      }
      sign = (c == '-') ? -1 : 1;
      if (c == '+' || c == '-')
        c = getch();
        for (*pn = 0; isdigit(c); c = getch())
          *pn = 10 * *pn + (c - '0');
        *pn *= sign;
        if (c != EOF)
          ungetch(c);
        return c;
    }
    

    Bei diesem kleinen Programm sollten eigentlich Integer-Werte zurückkommen, aber nach meiner Ansicht ist die Zeichenkette die ausgegeben wird viel zu lang. Schaut doch auch mal nach und vielleicht kennt ihr den Fehler !



  • Also meines erachtens gibt das Programm nichts aus, du übergibst deiner funktion getint n char[MAX] , die braucht n int *.

    EDIT:
    Habs mal ein bisschen geändert, das es bei mir läuft. Was du dann siehst, die Zahlen, sind die ASCII Werte (oder auf was für nem System du auch immer arbeitest 😉 ), der einzelnen "Buchstaben", und am Ende kommt natürlich dann noch ein paar mal die 32, das ist das Leerzeichen, womit du Eingabe vorher initialisiert hast. Du gibst ja gar nicht die Rückgabe aus, sondern den Parameter pn..

    Gruß Mata



  • @cHillb3rT:
    Kann es sein, dass du nicht die geringste Ahnung hast, was du da überhaupt tust?

    1. Du brauchst gets nicht.
    2. Du brauchst Eingabe nicht.
    3. getint will als Parameter einen Zeiger auf einen einzigen int, kein char-Array.
    4. Wenn du einen String in einen int unwandeln willst, solltest du auch einen int ausgeben.



  • cHillb3rT hat wohl mal echt NULL Ahnung 👎



  • Ich mach mich gerade erst in diesem neuen Kapitel vertraut, also nur keine Hektik 😉 .....

    Derzeit sitz ich auch schon an der Lösung des Problems !


Anmelden zum Antworten