Wie kann man den Dateinamen beim Schreiben in einer Schleife dynamisch ändern?
Lesezeit: 2 Minuten
Richard Knopf
Ich würde gerne so etwas machen: In einer Schleife schreibe die erste Iteration etwas Inhalt in eine Datei namens file0.txt, die zweite Iteration file1.txt und so weiter, erhöhe einfach die Zahl.
FILE *img;
int k = 0;
while (true)
{
// here we get some data into variable data
file = fopen("file.txt", "wb");
fwrite (data, 1, strlen(data) , file);
fclose(file );
k++;
// here we check some condition so we can return from the loop
}
int k = 0;
while (true)
{
char buffer[32]; // The filename buffer.
// Put "file" then k then ".txt" in to filename.
snprintf(buffer, sizeof(char) * 32, "file%i.txt", k);
// here we get some data into variable data
file = fopen(buffer, "wb");
fwrite (data, 1, strlen(data) , file);
fclose(file );
k++;
// here we check some condition so we can return from the loop
}
Anders in C++:
#include <iostream>
#include <fstream>
#include <sstream>
int main()
{
std::string someData = "this is some data that'll get written to each file";
int k = 0;
while(true)
{
// Formulate the filename
std::ostringstream fn;
fn << "file" << k << ".txt";
// Open and write to the file
std::ofstream out(fn.str().c_str(),std::ios_base::binary);
out.write(&someData[0],someData.size());
++k;
}
}
FILE *img;
int k = 0;
while (true)
{
// here we get some data into variable data
char filename[64];
sprintf (filename, "file%d.txt", k);
file = fopen(filename, "wb");
fwrite (data, 1, strlen(data) , file);
fclose(file );
k++;
// here we check some condition so we can return from the loop
}
(obwohl das eine C-Lösung ist, also ist das Tag nicht korrekt)
Josh Wieder
Ich habe dies auf die folgende Weise erreicht. Beachten Sie, dass dies im Gegensatz zu einigen anderen Beispielen tatsächlich wie beabsichtigt kompiliert und funktioniert, ohne dass neben den Präprozessor-Includes Änderungen vorgenommen werden müssen. Die folgende Lösung iteriert fünfzig Dateinamen.
int main(void)
{
for (int k = 0; k < 50; k++)
{
char title[8];
sprintf(title, "%d.txt", k);
FILE* img = fopen(title, "a");
char* data = "Write this down";
fwrite (data, 1, strlen(data) , img);
fclose(img);
}
}
Sie meinen 51 Namen: 0 und 50 zählen jeweils als ein Name (nicht sicher, welchen Sie vergessen haben). Sie können dies schnell erkennen, indem Sie feststellen, dass es von 0 bis 10 (< 11) tatsächlich 11 Namen gibt.
– wahnsinnig
28. März 2015 um 10:16 Uhr
Sie meinen 51 Namen: 0 und 50 zählen jeweils als ein Name (nicht sicher, welchen Sie vergessen haben). Sie können dies schnell erkennen, indem Sie feststellen, dass es von 0 bis 10 (< 11) tatsächlich 11 Namen gibt.
– wahnsinnig
28. März 2015 um 10:16 Uhr
11247300cookie-checkWie kann man den Dateinamen beim Schreiben in einer Schleife dynamisch ändern?yes