[c/c++] Setzen eines EOF

Unicate

Erfahrenes Mitglied
Ich habe ein Problem:

Ich will ein Ende einer datei wegschneiden.
Angenommen ich habe bis zur 3. Zeile gelesen, dann will ich ein End of File setzen, und damit die datei verkürzen.

Wie mach ich das?

Ich möchte NICHTS von temporären Dateien hören, denn die Möglichkeit geht zwar ist mir aber zu unsauber.
 
EOF ist kein eigenes Zeichen, sondern nur ein spezieller Rückgabewert z.B. der fgets - Funktion.
Das Setzen eines EOF wird daher sicherlich nicht viel nützen!
ftruncate unter Unix schafft da abhilfe!

Code:
int fd=open("/tmp/file_to_trunc",O_RDWR,0);
if(fd>=0){
  int res=ftruncate(fd,LEN);
  if(res<0){
    perror("ftruncate");
  }
  close(fd);
}else{
  perror("open");
}
 
Hi.

@Unicate: Warum machst du nochmal das gleiche Thema auf? Was soll das?!

@Thomas Kuse: Das hatte ich bereits im ersten Thread geantwortet, leider ist aber truncate nur eine BSD Erweiterung und nicht im Standard. Übrigens ist EOF tatsächlich bei manchen (älteren) Betriebsystemen ein eigenes Zeichen und es wird tatsächlich (im Textmodus) nur bis dahin gelesen.

Weiterhin hab ich bereits (sinngemäß) gesagt das man den ersten Teil der Datei auch in den Speicher einlesen (wenn's nicht allzu viel ist versteht sich) und dann die Datei mit Modus "w" öffnen und den Inhalt dann wieder reinschreiben kann.

Gruß
 
Zurück