C und C + + Programming Resources

Share / Bookmark
Benutzerdefinierte Suche

File Handling in C-Sprache

Geschrieben am 13. September 2008

In diesem Abschnitt werden wir über Dateien, die sehr wichtig für die Speicherung von Informationen sind permanent zu diskutieren. Wir speichern Informationen in Dateien für viele Zwecke, wie die Datenverarbeitung durch unsere Programme.

Was ist eine Datei?

Abstrakt, ist eine Datei, eine Sammlung von Bytes auf einem sekundären Speichergerät, die in der Regel ist eine Scheibe irgendeiner Art gespeichert. Die Sammlung von Bytes kann interpretiert werden, zum Beispiel, als Zeichen, Wörter, Zeilen, Absätzen und Seiten aus einem Textdokument, Felder und Datensätze von einer Datenbank oder Pixel aus einem grafischen Bild. Die Bedeutung, um eine bestimmte Datei angehängt wird vollständig von der Datenstrukturen und Operationen durch ein Programm, um die Datei verwendet ermittelt. Es ist denkbar (und es manchmal geschieht), dass eine Grafik-Datei wird gelesen und angezeigt durch ein Programm zur textuellen Daten zu verarbeiten. Das Ergebnis ist, dass keine sinnvolle Ausgabe erfolgt (wahrscheinlich) und dies ist zu erwarten. Eine Datei ist einfach eine Maschine zu entziffern Speichermedien, wo Programme und Daten für den Maschinen-Nutzung gespeichert werden.

Grundsätzlich gibt es zwei Arten von Dateien, die Programmierer beschäftigen sich mit Textdateien und Binärdateien. Diese zwei Klassen von Dateien werden in den folgenden Abschnitten besprochen werden.

ASCII-Textdateien

Eine Textdatei kann einen Strom von Zeichen, die ein Computer sequentiell Prozess sein. Es ist nicht nur verarbeitet, sondern nur sequentiell in Fahrtrichtung. Aus diesem Grund ist eine Textdatei, in der Regel nur für eine Art von Operation (Lesen geöffnet wird, schriftlich oder Anhängen) zu einem bestimmten Zeitpunkt.

Ebenso seit Textdateien verarbeiten nur Zeichen, sie können nur Daten lesen oder schreiben ein Zeichen zu einem Zeitpunkt. (In C Programming Language, sind Funktionen, die sich mit Textzeilen versehen, aber diese noch wesentlich Prozessdaten ein Zeichen in einer Zeit,.) Ein Text-Stream in C ist eine spezielle Art von Datei. Je nach den Anforderungen des Betriebssystems kann Zeilenumbrüche zu oder von Wagenrücklauf-Kombinationen je nachdem, ob Daten werden auf schriftliche oder gelesen, die Datei umgewandelt werden. Andere Konvertierungen Charakter kann auch auftreten, um die Speicheranforderungen des Betriebssystems zu erfüllen. Diese Übersetzungen auftreten, transparent, und sie treten auf, weil der Programmierer die Absicht, eine Textdatei Prozess signalisiert hat.

Binär-Dateien

Ein Binär-Datei ist nicht anders als eine Textdatei. Es ist eine Sammlung von bytes. In C Programming Language ein Byte ein Zeichen und sind gleichwertig. Daher ist eine Binär-Datei wird auch als ein Zeichen Stream genannt, aber es gibt zwei wesentliche Unterschiede.

  1. Keine spezielle Verarbeitung der Daten erfolgt und jedes Byte der Daten zu oder von der Festplatte übertragen unbearbeitet.
  2. C Programming Language stellt keine Konstrukte auf die Datei, und es kann aus oder geschrieben, um gelesen werden, in irgendeiner Art und Weise durch den Programmierer gewählt.

Binär-Dateien kann entweder sequentiell bearbeitet werden oder, je nach den Bedürfnissen der Anwendung können sie verarbeitet mit Random-Access-Techniken. In C Programming Language, Verarbeitung einer Datei mit wahlfreiem Zugriff Techniken verbunden Verschieben der aktuellen Position in der Datei an einem geeigneten Ort in der Datei vor dem Lesen oder Schreiben von Daten. Dies deutet auf ein zweites Merkmal von Binärdateien
â € "sie in der Regel verarbeitet mit Lese-und Schreibvorgänge gleichzeitig.

Zum Beispiel wird eine Datenbank-Datei erstellt und verarbeitet werden als Binär-Datei. Einen Datensatz zu aktualisieren Operation beteiligt Auffinden der entsprechenden Datensatz, das Lesen der Platte in den Speicher, Modifizieren es in gewisser Weise, und schließlich das Schreiben der Datensatz wieder auf die Festplatte auf seiner entsprechenden Stelle in der Datei. Solche Operationen sind häufig zu viele Binär-Dateien, sind aber selten in Anwendungen gefunden, die Prozess-Textdateien.

Erstellen einer Datei und die Ausgabe einige Daten

Um Dateien zu erstellen, müssen wir über File I / O, dh wie die Daten zu schreiben in eine Datei, wie Daten aus einer Datei lesen zu lernen. Wir werden diesen Abschnitt mit einem Beispiel für das Schreiben von Daten in eine Datei zu starten. Wir beginnen wie zuvor mit den Include-Anweisung für stdio.h, dann definieren Sie einige Variablen für den Einsatz in der beispielsweise auch ein ziemlich seltsam aussehenden neuen Typs.

 / * Programm zum Erstellen einer Datei und schreibt einige Daten der Datei * /
 # Include <stdio.h>
 # Include <stdio.h>
 main ()
 (
      FILE * fp;
      char stuff [25];
      int index;
      fp = fopen ("TENLINES.TXT", "w"); / * zum Schreiben geöffnet * /
      strcpy (Bestellung: "Dies ist ein Beispiel für Zeile.");
      for (index = 1; Index <= 10; index + +)
     	 fprintf (fp, "% s% d Line number \ n", stuff, index);
      fclose (fp); / * Schließen Sie die Datei, bevor sie beendet Programm * /
 ) 

Der Typ-Datei ist für eine Datei variabel eingesetzt und ist in der stdio.h definiert. Es wird verwendet, um einen Dateizeiger für den Einsatz in Datei-Operationen zu definieren. Bevor wir in eine Datei schreiben kann, müssen wir uns öffnen. Was es wirklich heißt, wir müssen dem System mitteilen, dass wir wollen, um eine Datei zu schreiben und was der Dateiname ist. Wir tun dies mit dem fopen ()-Funktion in der ersten Zeile des Programms dargestellt. Der Dateizeiger fp in unserem Fall, verweist auf die Datei und zwei Argumente in den Klammern erforderlich, zunächst den Dateinamen, gefolgt von den Dateityp.

Der Name der Datei ist keine gültige DOS-Dateinamen ein, und können in Groß-oder Kleinbuchstaben oder sogar gemischt ausgedrückt werden, wenn Sie dies wünschen. Es ist in doppelte Anführungszeichen eingeschlossen. Für dieses Beispiel haben wir den Namen TENLINES.TXT gewählt haben. Diese Datei sollte nicht auf Ihrer Festplatte existieren zu diesem Zeitpunkt. Wenn Sie eine Datei mit diesem Namen haben, sollten Sie seinen Namen zu ändern oder zu verschieben, weil es, wenn wir dieses Programm ausführen, wird ihr Inhalt gelöscht werden. Wenn Sie dona € ™ t haben eine Datei mit diesem Namen, das ist gut so, weil wir wird man anlegen und einige Daten hinein. Sie sind berechtigt, ein Verzeichnis mit der Datei name.The Verzeichnis muss natürlich auch ein gültiges Verzeichnis sonst tritt ein Fehler auf. Auch, weil der Weg C Griffe Zeichenketten, das Verzeichnis Trennzeichen â € ~ \ â € ™ zweimal geschrieben werden müssen. Zum Beispiel, wenn sich die Datei in dem \ PROJEKTE Unterverzeichnis abgelegt werden, dann den Dateinamen wie "\ \ Projects \ \ TENLINES.TXT eingegeben werden sollten". Der zweite Parameter ist die Datei-Attribut und kann jede der drei Buchstaben R, W, oder ein, und müssen kleingeschrieben sein.

Reading (r)

Wenn ein R verwendet wird, die Datei zum Lesen geöffnet wird, aw wird verwendet, um eine Datei anzugeben, die zum Schreiben benutzt werden, und ein a gibt an, dass Sie zusätzliche Daten an den append bereits in einer bestehenden Datei wünschen. Die meisten C-Compiler haben andere Dateiattribute verfügbar; überprüfen Sie Ihre Reference Manual für weitere Details. Mit dem R zeigt an, dass die Datei angenommen wird, um eine Textdatei sein. Öffnen einer Datei zum Lesen erfordert, dass die Datei bereits vorhanden ist. Wenn es nicht vorhanden ist, wird die Datei Zeiger auf NULL gesetzt werden können und durch das Programm überprüft werden.

Hier ist ein kleines Programm, das eine Datei liest und zeigt seinen Inhalt auf dem Bildschirm.

  / * Programm, um den Inhalt einer Datei auf dem Bildschirm anzuzeigen * /
 # Include <stdio.h>
 void main ()
 (
    FILE * fopen (), * fp;
    int c;
    fp = fopen ("prog.c", "r");
    c = getc (fp);
    while (c! = EOF)
    (
   		 putchar (c);
		 c = getc (fp);
    )
    fclose (fp);
 ) 

Schreiben (w)

Wenn eine Datei zum Schreiben geöffnet wird, wird es erstellt, wenn es nicht schon existiert und es wird zurückgesetzt, wenn es tut, sich in die Löschung aller Daten bereits vorhanden sein. Mit dem W zeigt an, dass die Datei angenommen wird, um eine Textdatei sein.

Hier ist das Programm in einer Datei erstellen und schreiben Sie einige Daten in die Datei.

  # Include <stdio.h>
 int main ()
 (
  FILE * fp;
  file = fopen ("datei.txt", "w");
  / * Erstellen Sie eine Datei und fügen Sie Text * /
  fprintf (fp, "% s", "Dies ist nur ein Beispiel :)"); / * schreibt Daten in die Datei * /
  fclose (fp); / * getan! * /
  return 0;
 ) 

Anfügen (a)

Wenn eine Datei zum Anhängen geöffnet wird, wird es erstellt, wenn es nicht schon existiert und es wird zunächst leer sein. Wenn es existiert, wird die Dateneingabe Punkt am Ende der vorliegenden Daten, so dass keine neuen Daten auf alle Daten, die bereits in die Datei aufgenommen werden positioniert werden. Mit dem A bedeutet, dass die Datei angenommen wird, um eine Textdatei sein.

Hier ist ein Programm, das Text in eine Datei, die bereits existiert, und es gibt einen Text in der Datei hinzufügen.

  # Include <stdio.h>
 int main ()
 (
     FILE * fp
     file = fopen ("datei.txt", "a");
     fprintf (fp, "% s", "Dies ist nur ein Beispiel :)"); / * append einigen Text * /
     fclose (fp);
     return 0;
 ) 

Ausgeben, um die Datei

Die Aufgabe der tatsächlich ausgeben, um die Datei ist fast identisch mit der Ausgabe haben wir bereits auf die Standard-Ausgabe-Gerät getan haben. Der einzige wirkliche Unterschied sind die neuen Namen und Funktion der Zugabe der Dateizeiger als einer der Funktionsargumente. In dem Beispiel-Programm ersetzt fprintf unserer vertrauten printf-Funktion ein, und der Dateizeiger zuvor definiert ist das erste Argument in den Klammern. Der Rest der Aussage aussieht und in der Tat identisch ist, die printf-Anweisung.

Schließen einer Datei

Zum Schließen einer Datei verwenden Sie einfach die Funktion fclose mit den Dateizeiger in die Klammern. Eigentlich, in diesem einfachen Programm, ist es nicht notwendig, um die Akte zu schließen, da das System alle offenen Dateien vor der Rückkehr in DOS zu schließen, aber es gehört zum guten Programmierstil für Sie auf alle Dateien zu schließen, trotz der Tatsache, dass sie geschlossen werden automatisch, denn das wäre wie eine Erinnerung, um Sie über handeln, welche Dateien am Ende der einzelnen Programme geöffnet sind.

Sie können eine Datei zum Schreiben zu öffnen, schließen und öffnen Sie es zum Lesen, dann schließen Sie es und öffnen es erneut zum Anhängen, etc. Jedes Mal, wenn Sie es öffnen, könnten Sie die gleiche Datei-Zeiger verwenden, oder Sie können ein anderes ein. Der Dateizeiger ist einfach ein Werkzeug, das Sie verwenden, um eine Datei zu zeigen und Sie entscheiden, welche Datei es wird Punkt. Kompilieren und Ausführen dieses Programms. Wenn Sie es ausführen, werden Sie nicht bekommen jede Ausgabe auf dem Monitor, weil es doesnâ € ™ t erzeugen keine. Nach dem Ausführen, suchen Sie in Ihrem Verzeichnis für eine Datei namens TENLINES.TXT und geben Sie es, das ist, wo Ihr Ausgang wird. Vergleichen Sie die Ausgabe mit, dass im Programm angegeben, sie sollten sich darauf einigen! Nicht löschen die Datei mit dem Namen TENLINES.TXT noch, wir werden sie in
einige der anderen Beispiele in diesem Abschnitt.

Lesen aus einer Textdatei

Nun zu unserem ersten Programm, das aus einer Datei liest. Dieses Programm beginnt mit den bekannten gehören, einige Daten Definitionen, und die Datei öffnen Aussage, die keine Erklärung, außer der Tatsache, dass ein r ist hier, weil wir es lesen wollen eingesetzt werden, erfordern sollte.

  # Include <stdio.h>
    main ()
    (
      FILE * fp;
      char c;
      funny = fopen ("TENLINES.TXT", "r");
      if (fp == NULL)
		 printf ("Datei existiert nicht \ n");
      else (
       do (
        c = getc (fp); / * Hole ein Zeichen aus der Datei
        * /
          putchar (c); / * zeigt es auf dem Monitor
        * /
        ) While (c! = EOF) / * wiederholen, bis EOF (end of file)
      * /
      )
     fclose (fp);
    ) 

In diesem Programm können wir überprüfen, ob die Datei existiert, und wenn es funktioniert, haben wir den Hauptteil des Programms auszuführen. Wenn es nicht drucken wir eine Nachricht, und beenden. Wenn die Datei nicht existiert, wird das System den Zeiger gleich NULL, die wir testen können. Der Hauptteil des Programms ist eine Do While-Schleife, in der ein einzelnes Zeichen aus der Datei und die Ausgabe an den Monitor, bis ein EOF (Ende der Datei zu lesen) ist aus der Eingabedatei festgestellt. Die Datei wird dann geschlossen und das Programm beendet. An diesem Punkt haben wir das Potenzial für eine der häufigsten und verwirrenden Probleme der Programmierung in C. Die Variable aus dem getc Funktion zurückgegeben wird, ein Charakter, so können wir eine char-Variable für diesen Zweck verwenden. Es ist ein Problem, das hier entwickeln könnten, wenn wir auf eine unsigned char verwenden jedoch passiert, weil C in der Regel liefert ein minus eins für ein EOF - die eine Variable vom Typ unsigned char nicht
enthalten kann. Ein Typ unsigned char-Variable kann nur die Werte von null auf 255, so wird es eine 255 für ein minus eins in C. Rückkehr Dies ist eine sehr frustrierende Problem, zu versuchen, zu finden. Das Programm kann nie die EOF und wird daher nie die Schleife beenden. Dies ist leicht zu verhindern: immer einen char oder int-Typ-Variable für den Einsatz in der Rückkehr ein EOF. Es ist ein weiteres Problem mit diesem Programm, aber wir werden darum kümmern, wenn wir das nächste Programm zu erhalten und lösen sie mit dem einen nach.

Nach dem Kompilieren und Ausführen dieses Programms und sind mit den Ergebnissen zufrieden, wäre es eine gute Übung, um den Namen zu ändern und TENLINES.TXT das Programm erneut ausführen, um zu sehen, dass die NULL-Test auch tatsächlich wie angegeben. Achten Sie darauf, den Namen wieder ändern, weil wir noch nicht fertig mit TENLINES.TXT.

Seiten: [Seite - 1] [Seite - 2] [Seite - 3] [Seite - 4]

Tags: , ,

Gefällt was Sie sehen?

Werden Sie einer der Stammgäste und abonnieren! Sie sehen die ersten wissen, wann wir weitere tolle Beiträge wie diese fügen werden. Join up entweder durch RSS Feeds oder Email Updates noch heute!

Es gibt 257 Kommentare zu diesem Beitrag. Sie können alle Antworten auf diesen Eintrag durch den RSS 2.0 Feed verfolgen . Sie können die Ende überspringen und eine Antwort hinterlassen oder TrackBack von Ihrer eigenen Website.


Lassen Sie eine Antwort

Sie müssen eingeloggt Kommentar posten.