einlesen von messwerten mit fscanf

rustydust

Grünschnabel
moin, ich habe schon das forum durchforstet, konnte aber nichts hilfreiches finden, daher erhoffe ich mir so etwas hilfe.

ich muss dazu sagen, dass ich kaum ahnung von dem programmierzeugs habe, daher wäre es sehr nett, wenn die beschreibungen idiotensicher sind.

also folgendes problem.

ich habe messwerte mit vorzeichen, 2 nach- sowie vorkommastellen. die messwerte sind einmal geschwindigkeit 'speed' und die steigung 'steig', die ich als float initialisiert habe.

die datei heißt 'werte.dat' und die werte sind sozusagen tabellarisch angeordnet.

10leerzeichen 'speed' 10leerzeichen 'steig'

und das ganze in 120 zeilen (je 1 messwert speed und steig pro zeile)

jetzt will (und soll) ich werte mit fscanf auslesen und in die felder speed und steig schreiben. mir ist so, als könnte ich mit fscanf genau sagen, wie viele felder er auslesen soll. das bekomme ich aber nicht richtig hin. ich kann zwar was auslesen, bekomme aber nur mist raus.

vielleicht könnt ihr mir ja weiter helfen hier mal ein stück des codes
Code:
int einlesen (float speed[], float steig[])
{
 /*variablendeklaration*/
 int n, fehler;
 FILE *datin;
 
 n=0;          /*n auf 0 setzen, um am dateianfang zu starten*/
 fehler=1;     /*fehler auf 1 setzen, um in schleife zu springen*/
 
 datin = fopen ("werte.dat" , "r"); /*oeffnen der datei werte.dat, mit der annahme, dass werte.dat existiert*/
 
 while (fehler !=0 && n < 120)
 {
  fehler = fscanf (datin, "%f", &speed[n]);
  fscanf (datin, "%f", &speed[n]);
  n++;
  printf ("speed=%f\n",speed[n]);
  //printf ("check n=%i\n",n); checkprint n, i.O.
  //printf ("fehler=%i\n",fehler); checkprint fehler i.O.
 }
 
 /*datei schliessen*/
 fclose (datin);
 
 
 printf ("Fahrdauer %i Minuten",n);
    
 return (n);
}

ich hoffe, ich konnte das problem halbwegs verständlich machen

dangöö
 
Willkommen im Forum

Änder einmal das:
C++:
  fehler = fscanf (datin, "%f", &speed[n]);
  fscanf (datin, "%f", &speed[n]);
  n++;
  printf ("speed=%f\n",speed[n]);
in das
C++:
  fehler = fscanf (datin, "%f %f", &speed[n],&steig[n]);
  printf ("speed=%f\n",speed[n]);
  n++;

und nimm beim letzten printf eher %d.

Wie schaut den der Aufruf der Funktion aus?
 
Zurück