August 2011 - dust

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

August 2011 - dust
Hallo,

ich habe ein paar Fragen zum Vorgehen bei der Programmieraufgabe “dust” von der GSP-Klausur August 2011.
Hauptsaechlich geht es mir um die Methode [m]void *convertFile(void *arg)[/m]. Hier weiss ich nicht genau, wie ich das Verlangte umsetzen soll. Ich wuerde zuerst mit fopen() die Datei oeffnen, die konvertiert werden soll. Aber was nun?

  1. Vom Gefuehl her wuerde ich jetzt mit fgets() jede Zeile einzeln betrachten. Aber was fuer eine Groesse muss ich fgets() uebergeben, wenn ich nicht weiss, wie lang die laenste Zeile der zu konvertierenden Datei ist?
  2. Angenommen 1) funktionert, wie kann man dann eine neue Datei im Zielornder erstellen und dort die konvertierten Zeilen einzeln einfuegen?

Ich weiss, dass ihr hier keine Loesungen zu einer Klausuraufgabe reinschreiben werdet. Mich wuerde aber die hier benoetigte Idee interessieren, da ich wirklich nicht weiss, wie ich vorgehen soll.

Viele Gruesse
Cybergy


[quote=Cybergy]1) Vom Gefuehl her wuerde ich jetzt mit fgets() jede Zeile einzeln betrachten. Aber was fuer eine Groesse muss ich fgets() uebergeben, wenn ich nicht weiss, wie lang die laenste Zeile der zu konvertierenden Datei ist?[/quote]Statt das ganze zeilenweise zu machen kannst du mittels [m]fgetc(3)[/m] auch zeichenweise lesen und jedes Zeichen einzeln behandeln. Wenn du dabei auf ein [m]\r[/m] triffst, ignorierst du es, alle anderen Zeichen gibst du ohne Änderung wieder in die Ausgabedatei aus.

[quote=Cybergy]2) Angenommen 1) funktionert, wie kann man dann eine neue Datei im Zielornder erstellen und dort die konvertierten Zeilen einzeln einfuegen?[/quote]Neue Dateien erstellst du, indem du sie einfach öffnest (also wieder [m]fopen(3)[/m]). Mit [m]fputc(3)[/m] kannst du die Zeichen in die Ausgabedatei schreiben. Wie du dir den Pfad der Ausgabedatei zusammenbastelst darfst du dir selbst überlegen.


Danke, jetzt habe ichs verstanden.