Zum Inhalt springen

Dynamischer Dateiname


Empfohlene Beiträge

Geschrieben

Hi @all,

Ich habe folgendes Problem bzw. weiß nicht wie ich das Programmtechnisch umsetzen kann.

Ich möchte eine for-Schleife schreiben, in der in jedem Schleifendurchgang nach erfolgter Rechnung die Ergebnisse in eine Datei geschrieben werden. Nun das Problem: Die Datei sollte in jedem Schleifendurchgang einen anderen Namen haben, so dass ich sie unterscheiden kann. Dies wollte ich gerne durch eine Variable steuern, so dass die Datei den Namen Variable.dat hätte. Die Variable wird dann um einen Wert erhöht, sodass die nächste Datei einen anderen Namen hat, nämlich Variable+x.dat. Die Variable ist eine Zahl.

Bsp.:

Erste Datei heisst: 12.dat

Zweite Datei heisst: 15.dat

Dritte Datei heisst: 18.dat

usw.

usw.

Kann man sowas mit C programmieren?

Eine andere Frage wäre noch:

Kann man dem Programm irgendwie sagen, dass er die neuen Zahlen nicht unter die vorherigen Zahlen schreibt, sondern jeweils mit einem Tab getrennt hinter die Zahl.

Ich meine folgendes:

i=0 (i ist die Laufvariable einer Schleife)

a

b

c

d

e

f

usw.

i=1

a 1

b 2

c 3

d 4

usw.

Vielen Dank schon mal im voraus.

Ich hoffe auf eine schnelle Antwort.

Gruß

checko

Geschrieben

Ich möchte eine for-Schleife schreiben, in der in jedem Schleifendurchgang nach erfolgter Rechnung die Ergebnisse in eine Datei geschrieben werden. Nun das Problem: Die Datei sollte in jedem Schleifendurchgang einen anderen Namen haben, so dass ich sie unterscheiden kann. Dies wollte ich gerne durch eine Variable steuern, so dass die Datei den Namen Variable.dat hätte. Die Variable wird dann um einen Wert erhöht, sodass die nächste Datei einen anderen Namen hat, nämlich Variable+x.dat. Die Variable ist eine Zahl.

Kann man sowas mit C programmieren?

  • Datei auf
  • Text rein
  • Datei zu

Wo ist das Problem?

Kann man dem Programm irgendwie sagen, dass er die neuen Zahlen nicht unter die vorherigen Zahlen schreibt, sondern jeweils mit einem Tab getrennt hinter die Zahl.

\t ist der Tab. Du darfst halt nur keinen Zeilenumbruch machen.

Geschrieben

Hi TDM,

Das Problem ist, dass die Datei in jedem Schleifendurchgang einen anderen Namen haben soll.

So dass die neuen werte in eine ANDERE Datei geschrieben werden soll.

Der Ablauf mal ganz konkret:

i=0 (i Laufvariable der for-Schleife)

Rechnung

Schreiben der Ergebnisse in eine Datei "x.dat".

i=1 (2. Durchgang)

Rechnung (mit etwas anderen Zahlen)

Schreiben der neuen Ergebnisse in eine andere Datei "y.dat".

i=2 (3. Durchgang)

Rechnung (")

Schreiben der neuen Ergebnisse in eine dritte Datei "z.dat".

Das mache ich aber jetzt nicht 3 mal, sondern vllt. 10 mal.

Verstehst du was ich meine?

Gruß

checko

Geschrieben

Ja, das ist schon klar, aber du sollst ja nicht den Dateiname einfach ändern sondern eine neue Datei aufmachen...

void writeValue(int value, const char* data, int dataLength);

void write(const char* fileName, const char* data, int dataLength);


int main(int argc, char* argv[])

{

	int i;

	for(i = 0; i < 10; i++)

	{

		writeValue(i, "abc", 3);

	}

	return 0;

}


void writeValue(int value, const char* data, int dataLength)

{

	char buffer[100];

	sprintf(buffer, "%i.dat", value);

	write(buffer, data, dataLength);

}


void write(const char* fileName, const char* data, int dataLength)

{

	FILE* pFile;

	pFile = fopen(fileName, "w");

	if(pFile != NULL)

	{

		fwrite(data, sizeof(char), dataLength, pFile);

		fflush(pFile);

		fclose(pFile);

	}

}

:rolleyes:

Geschrieben

Hi TDM,

Das sieht schon interessant aus.

Zum Verständnis würde ich gerne die Bedeutung von folgenden Keywords wissen.

1. sprintf

2. sizeof(char)

3. fflush

4. fwrite

Wäre nett, wenn du mir das noch erklären könntest.

Gruß

checko

Geschrieben
Zum Verständnis würde ich gerne die Bedeutung von folgenden Keywords wissen.
Von denen ist nur sizeof ein Schlüsselwort, die anderen sind Funktionen der Standardbibliothek.

sprintf ist dasselbe wie printf, nur dass das Ergebnis nicht auf die Konsole, sondern in einen char-Puffer ausgegeben wird.

sizeof ist ein Operator, der zur Compilezeit die Größe eines Typs (oder des Typs eines Ausdrucks) ermittelt, und zwar relativ zur Größe von char. sizeof(char) ist definitionsgemäß 1.

fflush erzwingt das Schreiben von gepufferten Zeichen in einen Ausgabestream. Ist hier m.M.n. unnötig.

fwrite schreibt Daten in einen Ausgabestream.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...