Die Dateitypen, die die C-Sprache verarbeiten kann, sind: Textdateien und Binärdateien. Die von der C-Sprache verarbeiteten Dateien werden entsprechend der Speicherform in Textdateien und Binärdateien unterteilt: 1. Textdateien speichern einen ASCII-Code, und der Inhalt der Datei kann direkt eingegeben und ausgegeben werden. 2. Binärdateien speichern Zeichen direkt und kann keine Binärdateien speichern. Der Inhalt der Datei wird direkt auf dem Bildschirm ausgegeben.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, c99-Version, Dell G3-Computer.
In Computern erfolgen Eingabe und Ausgabe in Form von Datenströmen. Je nach Zugriffsmodus werden Dateien in Dateien mit sequentiellem Zugriff und Dateien mit wahlfreiem Zugriff unterteilt. Je nach Speicherform wird es in Binärdateien und Textdateien unterteilt. Die Textdatei speichert einen ASCII-Code und der Inhalt der Datei kann direkt ein- und ausgegeben werden. Binärdateien speichern Zeichen direkt und der Inhalt von Binärdateien kann nicht direkt auf dem Bildschirm ausgegeben werden. Daher werden die Dateien, die die C-Sprache verarbeiten kann, entsprechend der Speicherform in Textdateien und Binärdateien unterteilt.
Der Unterschied zwischen Textdateien und Binärdateien
Textdateien werden normalerweise zum Speichern von mit bloßem Auge sichtbaren Zeichen verwendet, z. B. TXT-Dateien, C-Dateien, DAT-Dateien usw. Durch Öffnen dieser Dateien mit Mit einem Texteditor können wir den Inhalt der Datei reibungslos verstehen.
Binärdateien werden normalerweise zum Speichern unlesbarer Inhalte wie Videos, Bilder, Programme usw. verwendet. Wenn Sie diese Dateien mit einem Texteditor öffnen, werden Sie eine Menge verstümmelter Zeichen sehen, die Sie überhaupt nicht verstehen können.
Aber physikalisch gesehen gibt es keinen Unterschied zwischen Binärdateien und Zeichendateien. Bei beiden handelt es sich um Daten, die in binärer Form auf der Festplatte gespeichert sind.
Der Grund, warum wir den Inhalt von Textdateien verstehen können, liegt darin, dass die Textdateien Zeichenkodierungen wie ASCII, UTF-8, GBK usw. verwenden. Der Texteditor kann diese Kodierungsformate erkennen und die Kodierungswerte konvertieren in Zeichen zur Anzeige umgewandelt.
Binärdateien verwenden spezielle Kodierungsformate wie mp4, gif, exe usw. Der Texteditor erkennt diese Kodierungsformate nicht und kann sie nur zufällig entsprechend dem Zeichenkodierungsformat analysieren, sodass es zu einem Durcheinander von Zeichen kommt, einige sogar Habe es noch nie gesehen.
Wenn wir eine neue MP4-Datei erstellen, eine Zeichenfolge hineinschreiben und sie dann mit einem Texteditor öffnen, können interessierte Leser es trotzdem selbst ausprobieren.
Im Allgemeinen haben verschiedene Dateitypen unterschiedliche Codierungsformate und es müssen entsprechende Programme (Software) verwendet werden, um sie korrekt zu analysieren, andernfalls handelt es sich um eine Ansammlung verstümmelter Zeichen oder sie können nicht verwendet werden.
Für Programmierer sind Textdateien und Binärdateien eine Aussage, die angibt, wie Sie die Datei öffnen sollen (Textmodus/Binär), welche Funktion Sie zum Lesen und Schreiben der Datei verwenden sollten (Lese- und Schreibfunktionen) und wie Sie dies bestimmen wenn Sie dieses Ende der Datei gelesen haben.
Konkret:
1. Wie öffne ich eine Datei?
ANSI C spezifiziert die Standardbibliothek für Eingabe- und Ausgabefunktionen und verwendet die Funktion fopen() zum Öffnen von Dateien. Die aufrufende Methode der Funktion fopen() lautet im Allgemeinen:
FILE *fp; fp=fopen(文件名,使用文件方式);
Siehe die folgende Tabelle für die Dateimethode:
Verwenden Sie die Dateimethode |
Bedeutung |
"r" (lesen nur) |
Eine Textdatei zur Eingabe öffnen |
"w" (nur Schreiben) |
Eine Textdatei zur Ausgabe öffnen |
"a" (anhängen) | Öffnen Sie eine zum Anhängen einer Textdatei. |
„rb“ (nur Lesen) |
Öffnen Sie eine Binärdatei zur Eingabe. |
„wb“ (nur Schreiben). |
Öffnen Sie eine Binärdatei Datei zur Ausgabe |
„ab“ (anhängen) |
Öffnen Sie eine Binärdatei zum Anhängen |
„r+“ (Lesen und Schreiben) |
Öffnen Sie eine Textdatei zum Lesen/ Schreiben |
„w+“ (Lesen und Schreiben) |
Erstellen Sie eine Textdatei zum Lesen/Schreiben |
„a+“ (Lesen und Schreiben) |
Öffnen Sie eine Textdatei für Lesen/Schreiben |
"rb+" (Lesen und Schreiben) |
Öffnen Sie eine Binärdatei zum Lesen/Schreiben |
"wb+" (Lesen und Schreiben) |
Erstellen Sie eine Binärdatei zum Lesen/Schreiben |
„ab+“ (Lesen und Schreiben) |
Öffnen Sie eine Binärdatei zum Lesen/Schreiben |
Wenn dieselbe Datei von der Festplatte in den Speicher (Programmdatenbereich oder Cache-Bereich) gelesen wird, ist der Inhalt im Speicher bei beiden Methoden im Allgemeinen unterschiedlich. Dies ist der wesentliche Unterschied zwischen den beiden Öffnungsmethoden.
Hier gibt es einen Hintergrund, das heißt, unter Windows wird ein Prozess ausgeführt, d. h. beim Schreiben einer Datei wird das Zeilenumbruchzeichen in einen Wagenrücklauf umgewandelt. Das Zeilenumbruchzeichen wird in der Festplattendatei gespeichert Beim Lesen der Datei auf der Festplatte wird eine umgekehrte Verarbeitung durchgeführt, dh kontinuierliche Wagenrückläufe und Zeilenvorschübe in der Datei werden in Zeilenvorschübe umgewandelt.
Daher ist beim Lesen einer Festplattendatei der im Textmodus gelesene Dateiinhalt wahrscheinlich kürzer als der der Binärdatei, da beim Lesen im Textmodus zwei Zeichen Wagenrücklauf und Zeilenvorschub in ein Zeichen umgewandelt werden müssen Äquivalent zur Kürzung einer kurzen Datei. Aber warum ist es einfach möglich? Da der Text möglicherweise keine zwei aufeinanderfolgenden Bytes 45 und 42 enthält (45 ist der ASCII-Code des CR-Wagenrücklaufs, 42 ist der ASCII-Code des Zeilenvorschubs CL), gibt es keine „Kürzungs“-Operation, sodass der Inhalt gelesen wird Dasselbe.
Konkret werden Dateidateien (im Textmodus geschrieben) am besten im Textmodus gelesen. Binärdateien (im Binärmodus geschrieben) werden am besten im Binärmodus gelesen. Andernfalls könnte es falsch sein. Das Obige wurde analysiert.
2. Welche Funktion wird zum Lesen und Schreiben von Dateien verwendet?
Wie Daten auf die Festplatte geschrieben werden, wird nicht durch die Methode zum Öffnen der Datei bestimmt, sondern durch die Schreibfunktion. Wie Daten von der Festplatte gelesen werden, wird nicht durch die Methode zum Öffnen der Datei bestimmt, sondern durch die Lesefunktion.
Wie schreibe ich die oben genannten Daten? Wie speichert man einen Variablentyp? Beispielsweise können Sie mit int 12 den Binärcode von 12 (4 Bytes) direkt speichern oder Zeichen 1 und Zeichen 2 speichern. Wie man Daten liest, bedeutet, dass ich sizeof lesen muss, wenn ich eine int-Variable lesen möchte (int) direkt Bytes oder zeichenweise lesen, bis das gelesene Zeichen kein numerisches Zeichen mehr ist.
C verfügt über zwei Sätze von Funktionen zum Lesen und Schreiben von Dateien, die die beiden oben genannten Methoden zum Lesen und Schreiben unterstützen:
fprintf (Dateizeiger, Formatzeichenfolge, Ausgabeliste);
fscanf (Datei Zeiger, Formatzeichenfolge, Eingabeliste);
fprintf(文件指针,格式字符串,输出列表);
fscanf (文件指针,格式字符串,输入列表);
3Wie ermittelt man das Ende der Datei?
In der C-Sprache, genauer gesagt in der C-Standardfunktionsbibliothek, gibt es ein Sonderzeichen EOF (diese Definition in stdio.h #define EOF (-1)), das Folgendes darstellt: Ende der Datei (Ende der Datei). ). In der while-Schleife wird EOF als Dateiendemarkierung verwendet. Die Datei mit EOF als Dateiendemarkierung muss eine Textdatei sein. In Textdateien werden Daten in Form von ASCII-Zeichencodewerten gespeichert. Wir wissen, dass der Bereich der ASCII-Codewerte zwischen 0 und 255 liegt und -1 nicht möglich ist, sodass EOF als Dateiendemarkierung verwendet werden kann. Wenn jedoch in der Sprache C Daten in einer Datei in Binärform gespeichert werden, wird der Wert -1 angezeigt. Zu diesem Zeitpunkt kann EOF nicht als Endmarkierung der Binärdatei verwendet werden. Um dieses Problem zu lösen, bietet ANSI C eine Feof-Funktion, um festzustellen, ob die Datei beendet wurde. Wenn das Ende der Datei erreicht ist, ist der Wert der Funktion feof (fp) 1, andernfalls 0. Mit der Funktion feof kann ermittelt werden, ob die Binärdatei oder die Textdatei endet. Es ist jedoch zu beachten, dass bei Verwendung von feof zur Bestimmung des Endes einer Textdatei bei nicht ordnungsgemäßem Schreiben des Codes auch das Dateiendezeichen EOF im Text gelesen werden kann, siehe http://baike .baidu.com/view/656648 für Details. Wenn wir wissen, ob es sich bei einer Datei um eine Textdatei oder eine Binärdatei handelt, werden wir besser daran erinnert, welche Lese- und Schreibfunktion wir wählen sollten.Wie in 2 erwähnt, wird die Art und Weise, wie die Daten gespeichert werden, nicht durch die Methode zum Öffnen der Datei bestimmt, sondern durch die Lese- und Schreibfunktionen. Wenn wir beispielsweise eine Datei als Binärdatei öffnen (eigentlich gibt sie nur die Konvertierung von Zeilenumbrüchen an), stellt dies eher ein (virtuelles) Konzept dar: Ich „hoffe“, dass der Inhalt in dieser Datei den Daten entspricht Dabei belegt der Typ int 4 Bytes und der Typ char 1 Byte. In diesem Modus verwende ich fread(buffer,size0f(int),1,fp), um ein int in eine int-Variable einzulesen.
Wir erinnern unsBevor wir eine Datei bearbeiten, müssen wir zunächst wissen, ob es sich bei der Datei um eine Textdatei oder eine Binärdatei handelt. Dateien werden im Textmodus geöffnet, und Binärdateien werden im Binärmodus geöffnet. Wenn wir eine Binärdatei bearbeiten möchten, dann öffnen wir sie im Binärmodus (theoretisch kann sie auch im Dateimodus geöffnet werden, wenn die geschriebenen Binärdaten jedoch Folgendes enthalten). 45 wird in 45,42 Speicher umgewandelt, siehe 1. Dies ist sehr wahrscheinlich. Wenn Sie gleichzeitig lesen und schreiben, verwenden Sie die beiden Funktionen fread und fwrite. Wenn ich eine Textdatei bedienen möchte, dann öffnen wir sie im Textmodus (theoretisch kann sie auch im Binärmodus geöffnet werden, aber das ist nicht sicher). Verwenden Sie beim gleichzeitigen Lesen und Schreiben die Funktionen fprintf, fscanf, fgetc, fputc, putw, getw, fgetc, fputs Verwandte Empfehlungen: „C Video Tutorial“
Das obige ist der detaillierte Inhalt vonWelche Dateitypen kann die C-Sprache verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!