Mehrere Dateien mit for schleife erstellen und in sie reinschreiben
-
Hallo,
ich möchte mit einer for schleife mehrere csv Dateien erstellen und in diese Werte speichern.
Ich weiß jetzt schon wie ich mehrere Dateien erstelle, aber als ich versucht habe in sie reinzuschreiben mit:
i<<"..."<<"endl; kam eine Fehlermeldung.
Bisher habe ich schon:#include <iostream> #include <fstream> #include <math.h> #include <cmath> #include <string> #include <sstream> #include <stdlib.h> int main() { FILE* ptr; char name[FILENAME_MAX]; for (int i = 0; i < 4; i++) { snprintf(name, sizeof(name), "%d.csv", i); fopen_s(&ptr, name, "w"); i<<"..."<<endl; fclose(ptr); } }
Ich hoffe ihr könnt mir weiterhelfen. Ich habe leider kaum Informatik-Wissen.
Danke
-
Schreibe bitte in eine Zeile vor Deinem Code
```
und in eine Zeile nach Deinem Code```
. Alternativ markiere Deinen Code und klicke auf das</>
in der Symbolleiste über dem Eingabefeld.
Du kannst Deine Beiträge auch im Nachhinein bearbeiten. Den Menüpunkt "Bearbeiten" findest Du hinter dem Drei-Punkte-Menü rechts unter Deinen Beiträgen.
Danke.
-
Wie lernst Du? Das ist eine Katastrophe.
-
@Swordfish
Was meinst du?
Die Bearbeitung oder den Code?
-
@imaunicornk Den Code.
-
@Swordfish
Hab ich aus dem Internet. Wie gesagt ich habe kaum Informatik Kenntnisse. Wir hatten nur ein Semester Grundlagen der Informatik, und jetzt müssen wir eine riesen Aufgabe selbst lösen, durch eigenständiges Recherchieren. Und ich komme gerade nicht weiter...
-
Und? Hast Du in diesem Semester die Grundlagen von C oder C++ gelernt?
-
@Swordfish C++, aber wir haben auch nicht den Unterschied gelernt
-
@imaunicornk sagte in Mehrere Dateien mit for schleife erstellen und in sie reinschreiben:
i<<"..."<<"endl; kam eine Fehlermeldung.
Was für eine Fehlermeldung bekommst Du denn? (Copy & Paste)
... und wie interpretierst Du die?
-
@Swordfish
error C2297: "<<": Ungültig, da der rechte Operand vom Typ "const char [4]" ist
error C2563: Listen der formalen Parameter stimmen nicht überein
error C2568: "<<": Auflösung der Funktionsüberladung nicht möglichdas hier sind die Fehler. Also es hat bestimmt mit diesem char feld zu tun, aber ich kanns nicht deuten.
-
@imaunicornk Welchen Typ hat
i
? Was macht der Operator<<
für Integer? Warum geht das mit"..."
als Operand nicht? Was willst Du mit dieser Zeile erreichen?Woher hast Du
fopen()
undfclose()
wenn Du C++ gelernt hast?
-
@Swordfish
Okay das mit dem i hab ich jetzt glaub gecheckt. i ist ja nur der Name der Datei. Also muss statt i wahrscheinlich name[i] oder so stehen, oder?
Aber das mit dem fopen() und fclose(), da habe ich keine Ahnung.
Sowas kam leider nicht in unserer Vorlesung dran.
-
@imaunicornk sagte in Mehrere Dateien mit for schleife erstellen und in sie reinschreiben:
Okay das mit dem i hab ich jetzt glaub gecheckt. i ist ja nur der Name der Datei.
Alter, jetzt mal ernsthaft. Welchen Typ hat
i
?
-
@Swordfish
Also wie gesagt ich habe keine Ahnung von irgendwas.
Wenn du etwas weißt, bitte hilf mir, wenn nicht lass es.
Und bitte hör auf so respektlos von oben herab zu antworten.
-
Hey Brudi, ich will Dir schon helfen, aber nachdenken und lernen musst Du schon selbst. Wo wird
i
deklariert? Da findest Du auch den Typ.
-
@Swordfish
also i wird doch in der schleife deklariert, dann muss es den Typ int haben, oder?
-
Die Verwirrung kommt offenbar daher, dass du weder C noch C++ richtig gelernt hast (bzw. dir ein Mischmasch beigebracht wurde) und du daher jetzt weder das eine noch das andere beherrscht. Ist leider ein häufiges Problem - schlechtes Lehrmaterial
Operatorüberladung, also mit
<<
schreiben, geht nur in C++. Zum Schreiben in Dateien müssen diese mit C++-Mitteln geöffnet werden. Guckst du: https://en.cppreference.com/w/cpp/header/iostream - du öffnest die Datei zum Schreiben mitofstream datei("dateiname");
(siehe Beispiel ganz unten auf https://en.cppreference.com/w/cpp/io/basic_ofstream)Du benutzt FILE* und fopen. Guckst du hier: https://en.cppreference.com/w/c/io/fopen
Das sind C-Funktionen. Ja, die kann man in C++ auch benutzen, aber dann eben nicht weiter mit C++-Mitteln arbeiten.Entscheide dich für eine Sprache und lerne diese dann idiomatisch. Wenn du C++ lernen willst, dann nimm
std::string
(nichtchar[irgendeine_laenge]
),std::ofstream
usw. Wenn du C lernen willst, dann guckst du hier: https://en.cppreference.com/w/c/io und schreibst z.B. mitfprintf
in eine Datei.
-
@imaunicornk sagte in Mehrere Dateien mit for schleife erstellen und in sie reinschreiben:
@Swordfish
also i wird doch in der schleife deklariert, dann muss es den Typ int haben, oder?Ja! Aber kannst du mit << in einen int hineinschreiben? Ergibt das Sinn?
-
Si Senor!! Also ist
i
eine Ganzzahl die von 0 bis 3 geht. Jetzt erkennst Du wahrscheinlich warumi<<"..."<<endl;
keinen Sinn macht.
Weiter.
Vergiss
fopen()
undfclose()
. In C++ verwendet man Streams: <fstream> (und dann passt auchoperator<<()
).
Den Dateinamen kannst Du Dir mit einem Stringstream (<sstream>) zusammenbasteln.
-
alles klar, vielen Dank!!!
Dann versuch ich es mal