C-Programmierung

Textdaten

File Close | | Binärdaten

Beispiel für den Zugriff auf Text-Dateien (ASCII):

Textdateien enthalten ASCII Zeichen. Das Ende einer Zeile wird durch einen Zeilenvorschub angedeutet (‘\n’).

In diesem Beispiel wird angenommen, dass die Daten als komma-separierte Werte in Textdarstellung vorliegen (alternativ separiert durch Semikolon etc.). Es liegen jeweils 5 Werte pro Zeile vor.

113.71, 120.49, 121.87, 122.03, 121.94,\n
120.15, 117.94, 117.53, 117.11, 116.68,\n
116.83, 115.38

Diese Textdaten können zeilenweise gelesen werden. Es wird angenommen, dass bereits ein Deskriptor vorliegt, d.h. eine Datei geöffnet wurde und dass die Daten in einer Listenstruktur abgelegt werden:

node_ptr root=NULL;

void insert_element(double value);

void read_values(FILE *file)
{
   double value;

   if (fscanf(file, "%lf", &value)==1)
   {
      insert_element(value);

      while (fscanf(file, ",%lf", &value)==1)
         insert_element(value);
   }
}

Komma-separierte Daten werden zeilenweise abgespeichert:

void write_values(FILE *file)
{
   node_ptr list=root;
   unsigned int c=0;

   while (list)
   {
      fprintf(file, "%f", list->item);
      c++;

      if (list->next)
      {
         fputc(file, ',');
         if (c%5==0) fputc(file, '\n');
      }

      list=list->next;
   }
}

Laden & Bearbeiten & Speichern:

#include <stdio.h>
#include <assert.h>

FILE *file;

assert( file=fopen("values.txt", "r") );
read_values(file);
assert( !fclose(file) );

/* do something with the data in the list */
...

assert( file=fopen("values.txt", "w") );
write_values();
assert( !fclose(file) );


File Close | | Binärdaten

Options: