# Auslesen von Datei ... fread



## crsakawolf (27. April 2009)

Hi comm,

da meine programmierkenntnisse schon einige Zeit nicht mehr in anspruch genommen wurden stehe ich nun vorm großen "loch"

Ich benötite einen Quellcode für das auslesen einer formatierten Datei.

Die Datei ist mit ; getrennt und hat 17 "Blöcke" die ein Datensatz ergeben.
Die import datei ist eine .csv datei (was keine große rolle spielen sollte)

zudem bräuchte ich ein struct, (dynamisch, da ich nicht weis, wieviele datensätze kommen)

so nun ja ...

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

struct daten{
       int mail_id;
       char ziel_mail[50];
       char name[50];
       char vorname[50];
       char strasse[70];
       char ort[60];
       char e_mail[50];
       char geb_tag[10];
       char verlinkung[50];
       char gesendet[50];
       char ip[25];
       char browser[50];
       char lokdate_ges[50];
       char lokzeit_ges[50];
       };

int main(int argc, char **argv)
{
   FILE *fp;
   int i,n;
   long dl;
   struct daten data,
   struct daten *po=&data;

   if ((fp=fopen("test.csv","r+")) == NULL)
      printf("Fehler: Datei \"test.csv\" konnte nicht geoeffnet werden!\n");
      else
      {
      printf("Datei \"test.csv\" wurde zum Aendern geoeffnet!\n");

          while((fread(po,sizeof(struct daten),1,fp) != EOF))
           {printf("test");}

      }
      getchar();
      
      return 0;
}
```

Bis dahin bin ich gekommen, jedoch hat die Whileschleife kein ende ... leider

Vielen dank schon einmal


----------



## deepthroat (27. April 2009)

Hi.

Falls es nicht unbedingt in C sein muss, wir hatten neulich ein ganz ähnliches Thema:

http://www.tutorials.de/forum/c-c/338939-csv-datei-auslesen-und-array-speichern.html

Das sollte sich recht einfach an dein Problem anpassen lassen.

Gruß

PS: fread gibt niemals den Wert EOF zurück. Wenn nichts gelesen werden konnte (aus welchem Grund auch immer) wird 0 zurückgegeben.


----------



## gussu (27. April 2009)

Aehm 
fread liefert meines wissen eine " 1 " wenn er lesen konnte also sprich wenns noch geklappt hat

```
while (fread(&buffer, sizeof(struct daten),1,datei) == 1)
      {
		// code
	}
```


----------



## deepthroat (27. April 2009)

gussu hat gesagt.:


> Aehm
> fread liefert meines wissen eine " 1 " wenn er lesen konnte also sprich wenns noch geklappt hat


fread liefert die Anzahl erfolgreich gelesener Einträge. 

Gruß


----------

