Hallo Jason,
leider bin ich nicht mehr so fit, was das Lesen in C angeht (ist schon mehr als 25 Jahre her!). Im Prinzip sollte es so funktionieren:
#include <stdio.h>
typedef struct telefon {
char imeiNummer[20];
char bezeichnung[100];
int speicherInGB;
double preis;
} handy_t;
int lese_datei( char* fnname, handy_t* feld)
{
FILE* fp;
int anzahl;
int erste_zeile;
char* ret;
char zeile[120];
fp = fopen(fnname, "r");
if(fp == NULL)
{
// Fehler
return 0;
}
erste_zeile = 1;
anzahl = 0;
for(;; ++anzahl)
{
ret = fgets(zeile, 120, fp);
if( ret == NULL )
{
break; /* Dateiende erreicht! */
}
if(erste_zeile == 0)
{
/* hier jetzt den String 'zeile' zerlegen und prüfen */
if( feld != NULL)
{
/* nach erfolgreicher Zuweisung 'feld' um 1 erhöhen */
}
}
else
{
erste_zeile = 0;
}
}
fclose(fp);
return anzahl;
}
int main() {
char* fname;
int anzahl;
handy_t* feld;
fname = "input.txt"; /*hier den Dateinamen angeben*/
anzahl = lese_datei(fname, NULL);
if(anzahl > 0)
{
/* Array mit Größe 'anzahl' anlegen*/
feld = malloc( ...;
lese_datei(fname, feld); /*zweites mal lesen*/
}
else
{
/*Fehler !*/
}
return 0;
}
an der Stelle 'feld != NULL' kannst Du zwischen dem ersten und zweiten Durchlauf der Funktion unterscheiden. Im ersten Durchlauf passiert nichts und im zweiten werden die Daten bei *feld gespeichert.
Falls noch Fragen sind, so melde Dich bitte.
Gruß Werner