Errorcodes in C!!

Dieses Thema im Forum "C/C++" wurde erstellt von hanni6al, 10.11.2008.

  1. #1 hanni6al, 10.11.2008
    Zuletzt bearbeitet: 10.11.2008
    hanni6al

    hanni6al Grünschnabel

    Dabei seit:
    10.11.2008
    Beiträge:
    1
    Zustimmungen:
    0
    Hallo @ All!!
    Ich brauch dringend hilfe!!
    Folgendes ich schreibe ein programm das mit gcc compiliert wird mit folgenden Programmcode:
    Code:
    char* read()
    {
      int character, length;
      char *speicher = malloc(sizeof (int));
      for(length=0; (character = getchar()) != '\n' && character != EOF; length++)
      {
        if(character > 127)
        {
          printf("Invalid Input Character.\n");
          return (EXIT_FAILURE);
        }
        speicher[length] = character;
        speicher= realloc(buffer, length+2);
      }
      if(length == 0)
      {
        printf("No input text.\n");
        return (EXIT_FAILURE);
      }
      speicher[length] = '\0';
      return speicher;
    }
    
    Also mit EXIT_FAILURE sollte sich das programm benden oder es hängt sich immer auf besser gesagt es kommt die meldung "segmentation fault". Es werden die Bibliotheken stdio.h & stdlib.h verwendet!(Andere darf ich nicht verwenden)
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Frage hat sich schon erledigt bitte Beitrag löschen!!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bytepool, 10.11.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    ich nehme an der Fehler lag hier? ;)

    Im allgemeinen ist es in so einem Fall, wenn du die Loesung selber findest, auch nett wenn du die Loesung noch kurz postest, damit es fuer Leute mit aehnlichen Problemen kein Mysterium bleibt wie du dein Problem geloest hast.

    mfg,
    bytpeool
     
  4. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Ein 'return (EXIT_FAILURE)' beendet nur das Programm, sofern es innerhalb von 'main' vorkommt. Da es bei Dir in einer eigenen Funktion vorkommt, wird eben nur der Wert von EXIT_FAILURE zurueckgegeben (der in stdlib.h als 1 definiert ist). Auf diesen Wert muesstest Du in der aufrufenden Funktion testen und entsprechend reagieren (d.h., wenn read() von main() aufgerufen wird, kannst Du dort das return wiederholen und das Programm wird beendet).

    Allerdings ist es nicht sinnvoll eine Funktion, die einen char* zurueckgibt, im Falle eines Fehlers EXIT_FAILURE zurueckzugeben, da '1' vermutlich eine erlaubte Adresse in Deinem Speicher ist (auch wenn man wohl davon ausgehen kann, dass ein normales user-programm diese Adresse nie zu sehen bekommt). Daher waere ein 'return NULL' sinnvoller.
     
Thema:

Errorcodes in C!!