Problem mit schreiben von Daten in eine CSV datei
-
Hallo, ich habe ein Problem und hab nicht wirklich viel ahnung von c++. Ich muss ein Messprogramm verbessern das jemand geschrieben hat und habe soweit alle probleme gelöst bis auf folgendes, woran ich jetzt schon ne weile hänge.
Ich versuche Daten in eine CSV-Datei zu schreiben und bekomme nur NULLEN in die CSV-Datei geschrieben. Ich weiss nicht warum, im Degub Modus bekomm ich für die Variablen die richtigen Werte angezeigt. Z.B. a[index1] = 1.82
aber die Werte a, b und c werden nicht in die CSV-Datei geschrieben.Folgend ein Teil des Programmcodes (ich kann leider nicht alles posten):
//Globale dek. double a[1500000]; double b[1500000]; double c[1500000]; int index1 = 0; -------------------------------------------------------------------------------------------- folgende ein Teil aus unterprogramm berechnung(): -------------------------------------------------------------------------------------------- if (unitOpened.values[0][i] > schwellwert_adc || unitOpened.values[0][i] < -schwellwert_adc) { zw_erg = abs(unitOpened.values[0][j]); b[index1] = b[index1] + (zw_erg/1000) * dt; c[index1] = c[index1] + pow(zw_erg/1000,2) * dt; } //Daten in ErgebnisArray speichern a[index1] = abs(unitOpened.values[0][j]); //Daten in einer csv-Datei speichern { FILE *fp; fp = fopen("daten.csv", "w"); for (int ag = 0; ag < index1 ; ag++) { fprintf(fp,"%f;%f;%f\n", a[index1], f[index1], e[index1]); } fclose (fp); }
Falls weiter informationen benötigt werden bitte posten, ich versuche sie dann zu besorgen (bitte nicht zuviel c++ sprache
)!
mfg Alex
/Edit akari : Bitte Code-Tags hier im Forum benutzen, sfds
-
Hallo
Mit dem C++ Builder hat dein Code-Auszug aber nichts zu tun, und auch nicht mit C++. Dein gezeigter Code ist Ansi-C, deshalb wirst du verschoben.
bis bald
akari
-
Dieser Thread wurde von Moderator/in akari aus dem Forum VCL (C++ Builder) in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ok sorry. Daran sieht man das ich keine Ahnung hab.
-
fprintf(fp,"%f;%f;%f\n", a[index1], f[index1], e[index1]);
fprintf(fp,"%f;%f;%f\n", a[ag], f[ag], e[ag]);
-
Naja an dem Code sind mehrere Probleme. Du benutzt als Parameter index1, obwohl du wahrscheinlich ag nutzen willst.
e und f sind wahrscheinlich Fehler beim erstellen vom Beispiel?
Und als Ausgabe solltest du, wenn du double benutzt, auch double ausgeben: %lf
-
Also ich hab das jetzt mal mit dem ag versucht. Für Parameter a hat das auch funktioniert. Aber mit b und c nicht. Fragt mich bitte nicht warum, ich weiss es nicht (C treibt mich zum wahnsinn, ich kauf mir heute ein Buch).
Mein code sieht jetzt so aus:
//Globale dek. double a[1500000]; double b[1500000]; double c[1500000]; int index1 = 0; -------------------------------------------------------------------------------------------- folgende ein Teil aus unterprogramm berechnung(): -------------------------------------------------------------------------------------------- if (unitOpened.values[0][i] > schwellwert_adc || unitOpened.values[0][i] < -schwellwert_adc) { zw_erg = abs(unitOpened.values[0][j]); b[index1] = b[index1] + (zw_erg/1000) * dt; c[index1] = c[index1] + pow(zw_erg/1000,2) * dt; } //Daten in ErgebnisArray speichern a[index1] = abs(unitOpened.values[0][j]); //Daten in einer csv-Datei speichern { FILE *fp; fp = fopen("daten.csv", "w"); for (int ag = 0; ag < index1 ; ag++) { fprintf(fp,"%lf;%lf;%lf\n", a[ag], b[ag], c[ag]); } fclose (fp); }
Also Parameter e und f waren eingabe fehler (sorry)!
Und wenn ich double benutze muß ich anstatt %f - %lf angeben?Vielen dank schon mal bis hier her.
LG Alex
-
Deine Variable index1 bestimmt, wie viele Zeilen in die Datei geschrieben werden. Deinem Code nach zu urteilen sind es genau 0.
Außerdem solltest du vor der Ausführung von fprintf prüfen, ob die Funktion fopen erfolgreich war, ob also fp == NULL ist.
Und jep, %lf steht für double.Gruß,
B.B.