Page 1 of 1

Speicherzugriffsfehler aus Datei lesen

Posted: 22. Dec 2006 16:13
by <Idefix>
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: Select all


#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!

Posted: 22. Dec 2006 19:15
by Janka
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: Select all

#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