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:
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:
{
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 <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 →