Schreiben und Lesen von Textdateien

Index vorige Seite nächste Seite

Eine Textdatei enthält, wie der Name schon sagt, richtigen, von Menschen lesbaren Text. Die Informationen werden also nicht wie bei den bisher behandelten Binärdateien einfach 1:1 vom Speicher in die Datei geschoben und zurück, sondern in richtige, formatierte, druckreife Buchstabencodes umgewandelt.
Geöffnet und geschlossen werden diese Dateien ebenfalls mit fopen und fclose, die Navigation funktioniert ebenso wie in Binärdateien; zum Lesen und Schreiben werden jedoch die Funktionen fscanf und fprintf verwendet.
Dies sind Funktionen aus den scanf/printf - Familien und funktionieren haargenau so wie scanf und printf auf dem Bildschirm, nur muß für unsere Zwecke vor dem Formatbezeichner noch die Anrede der Datei gegeben werden. Die Ausgabe unserer Funktionen ist natürlich auch nicht auf dem Bildschirm sichtbar, sondern erfolgt nur in der Datei.
Beispiel:
#include <stdio.h>

void main(void)
{
  FILE *stream;             // Dateivariable
  int a=3,b=678;            // zwei Integerkonstanten
  float f1=2.456,f2=9.876;  // zwei Gleitkommakonstanten
  char *s="Sinnlosdatei";   // eine Zeichenkette

  stream=fopen("sinnlos.txt","wt");
      // Datei sinnlos.txt als Textdatei zum Schreiben oeffnen
  fprintf(stream,"%s\n",s);
      // Zeichenkette + Zeilenumbruch in Datei schreiben
  fprintf(stream,"%4d   %4d\n",a,b);
      // beide Integerkonstanten + Zeilenumbruch in Datei schreiben
  fprintf(stream,"%10.4f   %10.4f\n",f1,f2);
      // beide Floatkonstanten + Zeilenumbruch in Datei schreiben
  fclose(stream);           // Datei schlieszen
}
Das Programm erzeugte eine Datei mit dem Namen sinnlos.txt und dem Inhalt:
Sinnlosdatei
   3    678
    2.4560       9.8760
Im nun folgenden Beispiel wird die eben erzeugte Datei gelesen und auf den Bildschirm geschrieben:
#include <stdio.h>

void main(void)
{
  FILE *stream;             // Dateivariable
  int a,b;
  float f1,f2;
  char s[20];

  stream=fopen("sinnlos.txt","rt");
      // Datei sinnlos.txt als Textdatei zum Lesen oeffnen
  fscanf(stream,"%20s",&s[0]);    // Zeichenkette lesen
  fscanf(stream,"%d %d",&a,&b);   // Integers lesen
  fscanf(stream,"%f %f",&f1,&f2); // Floats lesen

  fclose(stream);           // Datei schlieszen

// Darstellung auf dem Bildschirm:
  printf("%s\n",s);
  printf("%4d   %4d\n",a,b);
  printf("%10.4f   %10.4f\n",f1,f2);
  getch();
}
Der Vollständigkeit halber sei an dieser Stelle noch auf die Funktionen
int fgetc(FILE *stream);
int fputc(int c,FILE *stream);
und
char *fgets(char *s,int size,FILE *stream);
char *fputs(char *s,FILE *stream);
verwiesen.

Index vorige Seite nächste Seite

Autor: Ulrich Kritzner