Zeiger !

Welchen Compiler nutzt du?

also, versuchs so:
Code:
int main(void)
{
  int ret;
  int *b = 0;
  ret = getint(&b); //Funktionsaufruf
}

Es waren doch nur 3 Zeilen Code...
 
Der Fehler bleibt bestehen, aber ich hab immer noch keine Ausgabe :confused:

Zur Info:
Ich benutze Borland c++ 5 Professionell und des Programm kann ja eigentlich alles, was man braucht, wobei ich denke, dass die Lösung so nahe ist, aber ich komme nicht drauf irgendwie !
 
Was willst du eigentlich machen?
- nur so zwischendurch mal -

Vielleicht noch so:
Code:
int main(void)
{
  int ret = 0;
  int b = 0;
  ret = getint(&b);
  return ret;
}
 
Zuletzt bearbeitet:
Die Aufgabe lautet diese Funktion in ein Programm einzubinden:
Code:
int getint(int *pn)
{
  int c, d, sign;
  while (isspace(c = getch())) /* Zwischenraum übergehen */
    ;
    if (!isdigit(c) && c != EOF && c != '+' & c != '-')
    {             /* keine Zahl */
      ungetch(c);
      return 0;
    }
    sign = (c == '-') ? -1 : 1;
    if (c == '+' || c == '-')
    {
      d = c;                  /* Vorzeichen aufbewahren */
      if (!isdigit(c = getch()))
        if (c != EOF)
        {
          ungetch(c);         /* nicht numerische Zeichen und */
          ungetch(d);         /* und Vorzeichen zurückstellen */
          return d;           /* Vorzeichen liefern */
        }
    }
    for (*pn = 0; isdigit(c); c = getch())
      *pn = 10 * *pn + (c - '0');
      *pn *= sign;
      if (c != EOF)
        ungetch(c);
      return c;
}

Und ich hab mich gefragt, wie ich dann das main-Programm schreiben muss, dass es funktioniert !
 
gut... das hätteste jetzt ja...

Bleibt noch die Frage ob du weißt wofür die Funktion gut ist und was du für pn übergeben musst...
 
pn speichert die Integer-Werte, die man eingibt.

Ist ein Vorzeichen vorhanden, speichert es getint() in d und holt das nächste Zeichen. Ist das nächste Zeichen weder eine Ziffer noch EOF, stellt getint() erst dieses nächste Zeichen und dann das Vorzeichen zurück in die Eingabe, getint() liefert das Vorzeichen d als Resultat , um diesen Fall anzuzeigen.
 
Also, erst einmal, musste natuerlich entweder in getint() mit &b referenzieren oder aber b als zeiger definieren mit int *p ... . int *p sagt, p ist die Adresse eines integer wertes.
Dass & zeichen benutzt du um auf die Adresse einer Variable zuzugreifen.

also beispielsweise kabnnst du dann p auf eine integer variable b zeigen lassen.
Code:
int *p;
int b;
p=&b;

dass war jetzt ersteinmal zur Erklaerung, dass du beim ersten mal leider auf uns beide gehoert hast, und wir beide zwei unterschieldiche korrekte vorgehensweisen hatten - die aber zusammen wieder nicht funktionieren.

Fuer deine Implementierung versuch jetzt mal das folgende main Programm vor deinen code zu hauen:

Code:
#include <stdio.h>  /* Die Standardbibliothek zur ein und ausgabe, um zu sehen dass es klappt. */

int getint(int *pn);   /*funktiondeklaration */

int main(void) {
	int b;                /* b ist eine Integer Variabel */
	getint(&b);         /* Wir geben aber nur die Adresse der Variable weiter */
	printf("Deine Integerzahl: %i\n",b);   /* Ausdruck des Integers */
        printf("Die kannst du jetzt auch zum rechnen benutzen: %i\n", b*2+5);
	return 0;  /* Dass muss dich nicht inbteressieren, bin nur ein Unix pendant */
}

Falls dass nicht klappt. Sind deine Funktionen getch etc. auch implementiert usw.
Und wenn es jetzt nickt klappt - kopier die Ausgabe deines compilers hierher. Viel glueck.
 
Zurück