Hallo, kann mir jemand sagen, warum ich nur die ersten 19 float- Zahlen beim untenstehenden Code auslesen kann, obwohl in der angehängten Datei 500 float- Zahlen drinnenstehen. Vielen Dank für eure hilfe im voraus. #include <stdio.h> #include <stdlib.h> #define gr_array 255 FILE* dateimesswerte; float wert; int i = 0; int j; int k; float array_messwerte[2 * gr_array]; float x = 0; int main(void) { dateimesswerte = fopen("F:\\Messwertaufnahme1", "r"); if (!dateimesswerte) { printf("Fehler im System"); } /* float-Werte in Schleife aus Datei lesen:*/ //printf("vor der while- schleife\n"); do { array_messwerte[i] = wert; i++; printf("%i\n",i); } while (fread(&wert, sizeof(float), 1, dateimesswerte)); //== sizeof (float)); printf("Messwertpunkte;PSet; HertzAct"); //hier die Ueberschrift hinschreiben und mit einem ; trennen for(k = 0; k < gr_array; k++) { printf("\n%d;",k + 1); //erste Spalte printf("%.3f;",array_messwerte[k]); //zweite Spalte printf("%.3f;",array_messwerte[k + gr_array]); //dritte Spalte //hier koennen noch Spalten hereingeschrieben werden } /* for(i=0; i < (2*gr_array); i++) { printf("%.3f\n;" ,array_messwerte[i]); } */ //printf("nach der while schleife\n"); fclose(dateimesswerte);
Die liest die Datei mit fread, also binaer. Dann soltest Du das der I/O Library auch mitteilen und die Datei im binaeren Modus oeffnen. fopen( "....", "rb" ); Damit haelt sich dann der eigentliche Lesecode aus allem raus und interpretiert zb. NICHT irgendwelche Bytes als EOF Markierung innerhalb der Datei. Er versucht dann auch nicht, zb. die auf dem File vorhandene Sequenz CR/LF in nur ein '\n' umzusetzen. :-) Ist ein oft gemachter Fehler.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.