Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Vorwort des Gutachters
1 Einstieg in C
2 Das erste Programm
3 Grundlagen
4 Formatierte Ein-/Ausgabe mit »scanf()« und »printf()«
5 Basisdatentypen
6 Operatoren
7 Typumwandlung
8 Kontrollstrukturen
9 Funktionen
10 Präprozessor-Direktiven
11 Arrays
12 Zeiger (Pointer)
13 Kommandozeilenargumente
14 Dynamische Speicherverwaltung
15 Strukturen
16 Ein-/Ausgabe-Funktionen
17 Attribute von Dateien und das Arbeiten mit Verzeichnissen (nicht ANSI C)
18 Arbeiten mit variabel langen Argumentlisten – <stdarg.h>
19 Zeitroutinen
20 Weitere Headerdateien und ihre Funktionen (ANSI C)
21 Dynamische Datenstrukturen
22 Algorithmen
23 CGI mit C
24 MySQL und C
25 Netzwerkprogrammierung und Cross–Plattform-Entwicklung
26 Paralleles Rechnen
27 Sicheres Programmieren
28 Wie geht’s jetzt weiter?
A Operatoren
B Die C-Standard-Bibliothek
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch
Buch: C von A bis Z

C von A bis Z
3., aktualisierte und erweiterte Auflage, geb., mit CD und Referenzkarte
1.190 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1411-7
Pfeil 16 Ein-/Ausgabe-Funktionen
Pfeil 16.1 Was ist eine Datei?
Pfeil 16.2 Formatierte und unformatierte Ein-/Ausgabe
Pfeil 16.3 Standard-Streams
Pfeil 16.4 Höhere Ein-/Ausgabe-Funktionen
Pfeil 16.5 Datei (Stream) öffnen – »fopen«
Pfeil 16.5.1 Modus für »fopen()«
Pfeil 16.5.2 Maximale Anzahl geöffneter Dateien – »FOPEN_MAX«
Pfeil 16.6 Zeichenweise lesen und schreiben – »getchar()« und »putchar()«
Pfeil 16.6.1 Ein etwas portableres »getch()«
Pfeil 16.7 Zeichenweise lesen und schreiben – »putc()«/»fputc()« und »getc()«/»fgetc()«
Pfeil 16.8 Datei (Stream) schließen – »fclose()«
Pfeil 16.9 Formatiertes Einlesen/Ausgeben von Streams mit »fprintf()« und »fscanf()«
Pfeil 16.10 Standard-Streams in C
Pfeil 16.10.1 Standard-Streams umleiten
Pfeil 16.11 Fehlerbehandlung von Streams – »feof()«, »ferror()« und »clearerr()«
Pfeil 16.12 Gelesenes Zeichen in die Eingabe zurückschieben – »ungetc()«
Pfeil 16.13 (Tastatur-)Puffer leeren – »fflush()«
Pfeil 16.14 Stream positionieren – »fseek()«, »rewind()« und »ftell()«
Pfeil 16.15 Stream positionieren – »fsetpos()«, »fgetpos()«
Pfeil 16.16 Zeilenweise Ein-/Ausgabe von Streams
Pfeil 16.16.1 Zeilenweise lesen mit »gets()«/»fgets()«
Pfeil 16.16.2 Zeilenweise schreiben mit »puts()«/»fputs()«
Pfeil 16.16.3 Zeilenweise vom Stream einlesen mit »getline()« (nicht ANSI C)
Pfeil 16.16.4 Rezepte für zeilenweises Einlesen und Ausgeben
Pfeil 16.17 Blockweise lesen und schreiben – »fread()« und »fwrite()«
Pfeil 16.17.1 Blockweise lesen – »fread()«
Pfeil 16.17.2 Blockweise schreiben – »fwrite()«
Pfeil 16.17.3 Big Endian und Little Endian
Pfeil 16.18 Datei (Stream) erneut öffnen – »freopen()«
Pfeil 16.19 Datei löschen oder umbenennen – »remove()« und »rename()«
Pfeil 16.19.1 remove()
Pfeil 16.19.2 rename()
Pfeil 16.20 Pufferung einstellen – »setbuf()« und »setvbuf()«
Pfeil 16.20.1 Die Funktion »setbuf()«
Pfeil 16.20.2 Die Funktion »setvbuf()«
Pfeil 16.21 Temporäre Dateien erzeugen – »tmpfile()« und »tmpnam()«
Pfeil 16.21.1 »mkstemp()« – sichere Alternative für Linux/UNIX (nicht ANSI C)
Pfeil 16.22 Fehlerbehandlung
Pfeil 16.22.1 Fehlerausgabe mit »perror()«
Pfeil 16.22.2 Fehlerausgabe mit »strerror()«
Pfeil 16.23 Formatiert in einen String schreiben und formatiert aus einem String lesen – »sscanf()« und »sprintf()«
Pfeil 16.24 Byte- und wide-orientierter Stream
Pfeil 16.25 Ein fortgeschrittenes Thema
Pfeil 16.26 Low-Level-Datei-I/O-Funktionen (nicht ANSI C)
Pfeil 16.26.1 Datei öffnen – »open()«
Pfeil 16.26.2 Datei schließen – »close()«
Pfeil 16.26.3 Datei erzeugen – »creat()«
Pfeil 16.26.4 Schreiben und Lesen – »write()« und »read()«
Pfeil 16.26.5 File-Deskriptor positionieren – »lseek()«
Pfeil 16.26.6 File-Deskriptor von einem Stream – »fileno()«
Pfeil 16.26.7 Stream von File-Deskriptor – »fdopen()«


Rheinwerk Computing - Zum Seitenanfang

16.19 Datei löschen oder umbenennen – »remove()« und »rename()« Zur nächsten ÜberschriftZur vorigen Überschrift

Manchmal ist es erforderlich, eine Datei zu löschen bzw. diese umzubenennen.


Rheinwerk Computing - Zum Seitenanfang

16.19.1 remove() Zur nächsten ÜberschriftZur vorigen Überschrift

Zum Löschen einer Datei können Sie die Funktion remove() verwenden. Die Syntax lautet:

#include <stdio.h>

int remove(const char *pfadname);

Bei Erfolg gibt diese Funktion 0 und bei Misserfolg –1 zurück. Voraussetzungen für ein erfolgreiches Löschen sind außerdem der richtige Pfad und auch entsprechende Zugriffsrechte auf die Datei. Hier sehen Sie ein kurzes Beispiel zu remove():

/* a_remover.c */
#include <stdio.h>
#include <stdlib.h>

int main(void) {
   char pfad[100];

   printf("Welche Datei wollen Sie löschen?\n");
   printf("Bitte wenn nötig gültigen Pfad angeben.\n");
   printf("Eingabe :> ");
   scanf("%99s",pfad);
   if((remove(pfad)) < 0) {
      fprintf(stderr, "Fehler beim Löschen von %s", pfad);
      return EXIT_FAILURE;
   }
   return EXIT_SUCCESS;
}

Hinweis

Eine kurze Anmerkung bezüglich des absoluten Löschens einer Datei: Wenn eine Datei mit remove() gelöscht wird, geben Sie nur den Speicherplatz frei, also sämtliche Einträge, die zu einer Datei gehören. Aber auf den einzelnen Adressen befinden sich immer noch die Daten, und die lassen sich oftmals wiederherstellen.


Wollen Sie sichergehen, dass eine Datei nicht mehr wiederhergestellt werden kann, empfiehlt es sich, den Inhalt der Datei zuerst zu »zerstören«, ehe Sie mit remove() die Datei löschen. Der einfachste Weg ist es, den ganzen Inhalt mit irgendwelchen Zeichen zu beschreiben. Im folgenden Beispiel wurde dies mit fwrite() und dem Stringende-Zeichen '\0' durchgeführt:

/* shreeder.c */
#include <stdio.h>
#include <stdlib.h>

void my_remove(char *rm) {
   unsigned long size;

   FILE *rem=fopen(rm, "w+b");
   if(rem != NULL)  {
      fseek(rem, 0L, SEEK_END);  /* Stream an das Dateiende   */
      size=ftell(rem);           /* Größe in Bytes ermitteln */
      /* kompletten Inhalt mit \0 überschreiben */
      fwrite((char *)'\0', 1, size, rem);
      /* damit die Datei gelöscht werden kann, schliessen */
      fclose(rem);
      remove(rm);    /* Jetzt weg damit */
   }
}

int main(void) {
   char datei[] = "test.txt";
   my_remove(datei);
   return EXIT_SUCCESS;
}

Jetzt ist es zwar einigen Experten noch möglich, die Datei wiederherzustellen, doch am Inhalt der Datei dürften sich auch diese die Zähne ausbeißen.


Hinweis

Wollen Sie eine Datei löschen, die im Augenblick geöffnet ist, ist das Verhalten der Funktion remove() implementierungsabhängig.



Rheinwerk Computing - Zum Seitenanfang

16.19.2 rename() topZur vorigen Überschrift

Mit der Funktion rename() kann eine Datei umbenannt werden. Die Syntax dafür lautet:

#include <stdio.h>

int rename(const char *altname, const char *neuname);

Wenn alles richtig verlief, gibt die Funktion 0, ansonsten bei einem Fehler –1 zurück. Ein kurzes Listing zeigt, wie rename() angewendet wird:

/* a_renamer.c */
#include <stdio.h>
#include <stdlib.h>

int main(void) {
   char alt[20],neu[20];

   printf("Welche Datei wollen Sie umbenennen : ");
   scanf("%19s",alt);
   printf("Wie soll die Datei heissen: ");
   scanf("%19s",neu);
   if( (rename(alt,neu)) < 0) {
      fprintf(stderr, "Fehler beim Umbenennen von %s", alt);
      return EXIT_FAILURE;
   }
   return EXIT_SUCCESS;
}

Sollte eine Datei umbenannt werden und einen Namen erhalten, der bereits vorhanden ist, ist das Verhalten systemabhängig.

Die Funktionen rename() und remove() funktionieren unter UNIX/Linux-Systemen aber nur, wenn Sie ausreichende Zugriffsrechte für diese Datei besitzen. Unter Windows/MS-DOS ist dies teilweise noch zweitrangig.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: C von A bis Z

 C von A bis Z
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: C/C++






 C/C++


Zum Rheinwerk-Shop: Einstieg in C






 Einstieg in C


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: C++ Handbuch






 C++ Handbuch


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern