Speicherzugriffsfehler aus Datei lesen

Antworten
Nachricht
Autor
<Idefix>
Beiträge: 8
Registriert: 22. Aug 2006 9:31

Speicherzugriffsfehler aus Datei lesen

#1 Beitrag von <Idefix> » 22. Dez 2006 16:13

Ich versuche ein C-Programm mit gcc Ver. 3.3.5 unter Suse 9.3 zu erstellen und bin gleich am Anfang auf ein Problem gestoßen das ich nicht in den Griff bekomme. Und zwar will ich auf eine Datei zugreifen, bekomme aber ständig einen Speicherzugriffsfehler. Warum?

Code: Alles auswählen


#include <stdio.h>
 #include <stdlib.h>

int main&#40;int argc, char *argv&#91;&#93;&#41;
&#123;
 
  FILE *fp;
  char text&#91;255&#93;;
  char string&#91;&#93; = "Hallo";

  if&#40;fp = fopen&#40;"Datei.dat", "w+"&#41; == NULL&#41; &#123;
  printf&#40;"Probleme beim öffnen\n"&#41;;
  exit&#40;1&#41;;
&#125;

  fputs&#40;string, fp&#41;;

  fgets&#40;text,5,fp&#41;;
  printf&#40;"Das ist der Text&#58; %s", text&#41;;
  fclose&#40;fp&#41;;
  return 0;
&#125;
Das schreiben hab ich Testweise eingebaut. Die Datei wird auch korrekt erstellt. Nur lesen kann ich sie nicht!

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 22. Dez 2006 19:15

Erst einmal lässt sich dein Code oben gar nicht compilieren. Die korrigierte Version unten schon, und die erzeugt bei mir auch keinen Fehler.

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>

int main&#40;int argc, char *argv&#91;&#93;&#41;
&#123;

   FILE *fp;
   char text&#91;255&#93;;
   char string&#91;&#93; = "Hallo";

   if&#40;&#40;fp = fopen&#40;"Datei.dat", "w+"&#41;&#41; == NULL&#41;
   printf&#40;"Probleme beim öffnen\n"&#41;;

   fputs&#40;string, fp&#41;;

   fgets&#40;text,5,fp&#41;;
   printf&#40;"Das ist der Text&#58; %s", text&#41;;
   fclose&#40;fp&#41;;
   return 0;
&#125;
Um einen gerade geschriebenen Text wieder einzulesen, musst du übrigens dazwischen mit fseek() den Stream zurückspulen.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Antworten