Errorcodes in C!!

H

hanni6al

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!!
 
Zuletzt bearbeitet von einem Moderator:
Hi,

ich nehme an der Fehler lag hier? ;)

Code:
    speicher= realloc(buffer, length+2);

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
 
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.
 

Ähnliche Themen

C Code Hilfe!!! gesucht bei Dezimalzahl in Binärzahl for loop

Unix Webserver mit HTML Seite erstellen

Port generieren, wenn nicht dann

Prozesskommunikation mit PIPES - wie funktioniert das?

Ausführbare C-Datei von Mac OS auf Embedded Linux ausführen

Zurück
Oben