heute habe ich das Problem, daß ich ein Progrämmschen schreiben soll, das Byteweise eine Datei invertiert in eine andere schreiben soll. Also in der Zieldatei steht der inverse Text der Quelldatei.
Dazu lese ich aus der Quelldatei ein Byte und schreibe das in die Zieldatei. Dann setze ich den Dateizeiger zurück an den Anfang und lese und schreibe das nächste Zeichen. Das Problem im Moment, es wird das zuvor geschriebene Zeichen in der Zieldatei überschrieben. Die Datei bleibt auf diese Art immer nur ein Byte groß und das ist nicht das was ich will.
Hier ist der Codeausschnitt:
Code: Alles auswählen
Öffnen der ZielDatei
if ( ( ziel_datei = open ( argv[2], O_CREAT | O_EXCL | O_WRONLY, S_IRUSR | S_IWUSR ) ) == -1 )
{
printf ( "Ziel-Datei existiert schon ! Kann nicht ueberschrieben werden ! \n" );
exit ( -1 );
}
while ( ( anzahl_bytes = read ( quell_datei, buffer, BYTEZAHL ) ) > 0 )
{
anzahl_bytes = write ( ziel_datei, buffer , BYTEZAHL );
if ( anzahl_bytes == -1 )
{
printf ( "Fehler beim schreiben!\n" );
exit ( -1 );
}
if ( ( rueck_gabe = lseek ( ziel_datei, 0, SEEK_SET ) ) == -1 )
{
printf ( "Fehler beim Zuruecksetzen des Dateizeigers ! \n" );
exit ( -1 );
}
printf ( "Uebergebens Zeichen: %c \n", buffer[0] );
}
UND ich möchte (muß) es unbedingt mit lseek machen! Nicht mit rewind oder ähnlichen Funktionen!!
Hat jemand von Euch eine Idee?
Vielen Dank
Gruss Christian