Daten aus externer Datei lesen und lokal schreiben
-
Ich habe diesen Code:
#include <stdio.h> int main () { FILE * datenstream; FILE * datenstream2; char neuedaten [10240]; char string [100]; datenstream = fopen("X:\\APOSOFT\\APSCHICK.CSV", "r"); if(datenstream != NULL) { printf("APSCHICK konnte geoeffnet werden!"); } neuedaten = fgets(string , 10240 , datenstream); datenstream2 = fopen("APSCHICK2.CSV", "w"); fprintf(datenstream2, neuedaten); fclose(datenstream2); fclose(datenstream); printf("Daten wurden gespeichert!"); getchar(); return 0; }
Er zeigt mir folgenden Fehler:
16 xxx\C++\print.cpp incompatible types in assignment of `char*' to `char[10240]'Was ich vorhabe: Ich möchte aus der Datei "X:\\xyz\\APSCHICK.CSV" alle Daten auslesen und diese in der neuen Datei speichern.
-
Du mußt der Funktion fgets() das Array übergeben, in das du schreiben willst (und 'string' ist deutlich zu klein, um 10240 Zeichen aufnehmen zu können):
fgets(neuedaten,10240,datenstream);
PS: Und du solltest zum Schreiben lieber fwrite() verwenden, um einen (unbeabsichtigten) Formatstring-Angriff zu vermeiden.
-
Danke, funktioniert nun
Jetzt hab ich aber noch eine Frage:
Die Daten werden jetzt anneinander gereiht in die neue Datei geschrieben. In der APSCHICK.CVS (die Datei die ausgelesen wird) sind Zeilenumbrüche nach jedem kompletten Datensatz.
Wie kann ich diese in die neue Datei übernehmen?
Danke im voraus
-
Sehe gerade noch ein anderes Problem:
Er liest die Daten bis zum ersten Zeilumbruch und hört dann auf. Leider kenne ich C++ nicht, nur PHP, obwohl die Funktionen relativ gleich sind.
Außer fgets...gibt es auch noch eine andere Funktion wie "fread" um Daten zu lesen?
-
DieNeueApotheke schrieb:
Er liest die Daten bis zum ersten Zeilumbruch und hört dann auf. Leider kenne ich C++ nicht, nur PHP, obwohl die Funktionen relativ gleich sind.
Einfachste Lösung ist eine Schleife:
char daten[1000]; FILE* eingabe = fopen("Quelle.txt","r"); FILE* ausgabe = fopen("Ziel.txt","w"); while(!feof(eingabe)) { int count=fread(daten,1,1000,eingabe); fwrite(daten,1,count,ausgabe); }
Außer fgets...gibt es auch noch eine andere Funktion wie "fread" um Daten zu lesen?
Ja, genau das von dir genannte fread()
(und in C++ gibt es auch noch fstreams, die imho einfacher zu verwenden sind als FILE's (FILE ist ein Erbe aus C-Zeiten))