Heim  >  Artikel  >  Backend-Entwicklung  >  Vergleich der Sammlung von PHP-Textoperationsmethoden

Vergleich der Sammlung von PHP-Textoperationsmethoden

不言
不言Original
2018-04-04 10:43:291779Durchsuche

Der Inhalt dieses Artikels ist ein Vergleich einer Sammlung von PHP-Textoperationsmethoden. Jetzt teile ich ihn mit allen und kann auch Freunden in Not einen Hinweis geben

fgets und fputs, fread und fwrite, fscanf und fprintf

Funktionen zum Lesen und Schreiben von Zeichenfolgen fgets und fputs

1. Funktion zum Lesen von Zeichenfolgen Die Funktion der Funktion fgets besteht darin, eine Zeichenfolge aus der angegebenen Datei in ein Zeichenarray einzulesen. Der Funktionsaufruf hat die Form: fgets (Name des Zeichenarrays, n, Dateizeiger); wobei n eine positive ganze Zahl ist. Gibt an, dass die aus der Datei gelesene Zeichenfolge nicht länger als n-1 Zeichen ist. Fügen Sie die End-of-String-Markierung ' nach dem letzten gelesenen Zeichen hinzuDieses Beispielprogramm definiert eine Struktur stu, die zwei Strukturarrays boya und boyb sowie zwei Strukturzeigervariablen pp und qq angibt. pp zeigt auf boya, qq zeigt auf boyb. Zeile 16 des Programms öffnet die Binärdatei „stu_list“ im Lese-/Schreibmodus. Nachdem Sie zwei Schülerdaten eingegeben haben, schreiben Sie diese in die Datei, bewegen Sie dann den internen Positionszeiger der Datei an den Anfang der Datei und lesen Sie die beiden aus * Blöcke und zeigen Sie sie dann auf dem Bildschirm an.

Formatierte Lese- und Schreibfunktionen fscanf und fprintf

fscanf-Funktion, fprintf-Funktion hat ähnliche Funktionen wie die zuvor verwendeten scanf- und printf-Funktionen, beide sind formatierte Lese- und Schreibfunktionen . Der Unterschied zwischen den beiden besteht darin, dass die Lese- und Schreibobjekte der fscanf-Funktion und der fprintf-Funktion nicht die Tastatur und der Monitor sind, sondern Festplattendateien. Das Aufrufformat dieser beiden Funktionen ist: fscanf (Dateizeiger, Formatzeichenfolge, Eingabetabellenspalte); fprintf (Dateizeiger, Formatzeichenfolge, Ausgabetabellenspalte); d%s",&i,s);
fprintf(fp,"%d%c",j,ch);

Das Problem in Beispiel 10.6 kann auch mit den Funktionen fscanf und fprintf gelöst werden . Das geänderte Programm ist in Beispiel 10.7 dargestellt.

[Beispiel 10.7]

#include
struct stu
{
int num; int age;
char addr[15];
}boya[2],boyb[2],*pp,*qq; 🎜>char ch;
pp=boya;
qq=boyb;if((fp=fopen("stu_list","wb+"))
{
printf("Kann die Datei nicht mit einem Tastendruck öffnen!");
exit(1);
printf("ninput datan"); 🎜>for(i=0;i<2;i++,pp++)
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age, pp->addr);
pp=boya;
for(i=0;i<2;i++,pp++)
fprintf(fp,"%s %d %d %sn",pp ->name,pp->num,pp->age,pp->
rewind(fp); qq++)
fscanf(fp,"%s %d %d %sn",qq->name,&qq->num,&qq->age,qq->addr); "nnnametnumber age addrn");
qq=boyb; for(i=0;i<2;i++,qq++)
printf("%st%5d %7d %sn",qq-> ;name,qq->num, qq->age,
qq->addr);
fclose(fp);

Im Vergleich zu Beispiel 10.6 ist dies der Fall Die Funktionen fscanf und fprintf im Programm können jeweils nur ein Struktur-Array-Element lesen und schreiben. Daher wird eine Schleifenanweisung zum Lesen und Schreiben aller Array-Elemente verwendet. Beachten Sie auch, dass die Zeigervariablen pp und qq aufgrund der Schleife ihre Werte geändert haben, sodass ihnen in den Zeilen 25 bzw. 32 des Programms die erste Adresse des Arrays neu zugewiesen wird.

Zufälliges Lesen und Schreiben von Dateien

Die zuvor eingeführten Lese- und Schreibmethoden für Dateien sind sequentielles Lesen und Schreiben, dh das Lesen und Schreiben von Dateien kann nur von vorne beginnen und gelesen und geschrieben werden alle Daten der Reihe nach. Bei praktischen Problemen ist es jedoch häufig erforderlich, nur einen bestimmten Teil der Datei zu lesen und zu schreiben. Um dieses Problem zu lösen, können Sie den Positionszeiger innerhalb der Datei an die Stelle verschieben, an der gelesen und geschrieben werden soll, und dann lesen und schreiben. Diese Art des Lesens und Schreibens wird als zufälliges Lesen und Schreiben bezeichnet. Der Schlüssel zum zufälligen Lesen und Schreiben besteht darin, den Positionszeiger nach Bedarf zu verschieben, was als Dateipositionierung bezeichnet wird. Es gibt zwei Hauptfunktionen für die Dateipositionierung, um den internen Positionszeiger einer Datei zu verschieben, nämlich die Rücklauffunktion und die fseek-Funktion.

Die Rücklauffunktion wurde schon oft verwendet. Ihre Aufrufform ist: Zurückspulen (Dateizeiger); ihre Funktion besteht darin, den Positionszeiger innerhalb der Datei an den Anfang der Datei zu bewegen. Im Folgenden wird hauptsächlich die
fseek-Funktion vorgestellt.

Die Funktion fseek wird verwendet, um den internen Positionszeiger der Datei zu verschieben. Ihre Aufrufform ist: fseek (Dateizeiger, Verschiebung, Startpunkt); „Verschiebung“ stellt die Anzahl der verschobenen Bytes dar, und die Verschiebung muss aus langen Daten bestehen, damit kein Fehler auftritt, wenn die Dateilänge mehr als 64 KB beträgt. Wenn eine Konstante zur Darstellung der Verschiebung verwendet wird, ist das Suffix „L“ erforderlich. „Startpunkt“ gibt an, wo mit der Berechnung der Verschiebung begonnen werden soll. Es gibt drei festgelegte Startpunkte: den Anfang der Datei, die aktuelle Position und das Ende der Datei.

Die Darstellungsmethode ist in Tabelle 10.2 dargestellt.
Startpunkt stellt Symbolzahlen dar
────────────────────────────────——
Die erste Suche -set 0
Aktuelle Position SEEK – CUR 1
Ende der Datei SEEK – ENDE 2

Zum Beispiel:

fseek(fp,100L,0); Seine Bedeutung besteht darin, den Positionszeiger von den ersten 100 Bytes der Datei wegzubewegen. Es ist auch zu beachten, dass die Funktion fseek im Allgemeinen für Binärdateien verwendet wird. Aufgrund der notwendigen Konvertierung in Textdateien kommt es häufig zu Fehlern bei berechneten Positionen. Nach dem Verschieben des Positionszeigers kann das zufällige Lesen und Schreiben von Dateien mit jeder der zuvor vorgestellten Lese- und Schreibfunktionen durchgeführt werden. Da ein Datenblock im Allgemeinen gelesen und geschrieben wird, werden häufig die Funktionen fread und fwrite verwendet. Die folgenden Beispiele sollen das zufällige Lesen und Schreiben von Dateien veranschaulichen.

[Beispiel 10.8] Lesen Sie die Daten des zweiten Studenten in der Studentendatei-Studentenliste.

#include ];
}boy,*qq;
FILE *fp; 🎜>if((fp=fopen("stu_list","rb"))==NULL)
{
printf("Datei kann mit keinem Tastendruck geöffnet werden!");
exit(1);
}
rewind(fp);
fseek(fp,i*sizeof(struct stu),0); ,1,fp);
printf("nnnametnumber age addrn");
printf("%st%5d %7d %sn",qq->name,qq->num,qq-> age,
qq->addr);
}

Die Datei stu_list wurde vom Programm in Beispiel 10.6 erstellt. Dieses Programm liest die Daten des zweiten Schülers durch Zufallslesen. Im Programm ist boy als Variable vom Typ stu definiert und qq ist ein Zeiger auf boy. Die Datei wird zum Lesen von Binärdateien geöffnet und Zeile 22 des Programms verschiebt den Dateispeicherortzeiger. Der i-Wert ist 1, was bedeutet, dass vom Dateikopf aus die Länge eines Stu-Typs verschoben und dann die Daten des zweiten Schülers gelesen werden.

Dateierkennungsfunktion

Zu den häufig verwendeten Dateierkennungsfunktionen in der C-Sprache gehören die folgenden.

1. Dateiende-Erkennungsfunktion feof-Funktionsaufrufformat:

Funktion: Bestimmen Sie, ob sich die Datei am Ende der Datei befindet Der Wert ist 1, andernfalls ist er 0.

2. Dateifehlererkennungsfunktion ferror-Funktionsaufrufformat: ferror (Dateizeiger); Funktion: Überprüfen Sie, ob beim Lesen und Schreiben von Dateien Fehler vorliegen . Wenn der Ferror-Rückgabewert 0 ist, bedeutet dies, dass kein Fehler vorliegt, andernfalls liegt ein Fehler vor.

3. Setzen Sie das Dateifehler-Flag und das Dateiende-Flag auf 0. Funktionsaufrufformat: clearerr (Dateizeiger); Funktion: Diese Funktion wird verwendet, um das Fehler-Flag und die Datei zu löschen Endflag, so dass Sie den Wert 0 haben.

C-Bibliotheksdateien

Das C-System bietet eine Fülle von Systemdateien, sogenannte Bibliotheksdateien. C-Bibliotheksdateien sind in zwei Kategorien unterteilt, eine davon sind Dateien mit der Erweiterung „.h“. eine Header-Datei, wir haben sie im vorherigen Include-Befehl oft verwendet. Die Datei „.h“ enthält Informationen wie Konstantendefinitionen, Typdefinitionen, Makrodefinitionen, Funktionsprototypen und verschiedene Einstellungen für die Kompilierungsauswahl. Der andere Typ ist die Funktionsbibliothek, die den Zielcode verschiedener Funktionen enthält, die Benutzer im Programm aufrufen können. Normalerweise muss beim Aufrufen einer Bibliotheksfunktion in einem Programm vor dem Aufruf die „.h“-Datei eingefügt werden, in der sich der Prototyp der Funktion befindet.

Alle Bibliotheksfunktionen sind im Anhang aufgeführt.

ALLOC.H   Beschreibt Speicherverwaltungsfunktionen (Zuweisung, Freigabe usw.).
ASSERT.H   Definitions-Assert-Debugging-Makro.
BIOS.H                         ​ Out over ruft verschiedene Funktionen der IBM-PC ROM BIOS-Subroutine auf.
CONIO.H   Beschreibt die verschiedenen Funktionen, die die E/A-Unterroutine der DOS-Konsole aufrufen.
CTYPE.H Enthält Namenstypinformationen zur Zeichenklassifizierung und -konvertierung (z. B. isalpha, toascii usw.).
DIR.H   Enthält Strukturen, Makrodefinitionen und Funktionen im Zusammenhang mit Verzeichnissen und Pfaden.
DOS.H   Definition und Beschreibung einiger Konstanten und Funktionen, die von MSDOS und 8086 aufgerufen werden.
ERRON.H Definiert die Mnemonik für Fehlercodes.
FCNTL.H   Symbolische Konstanten, die bei Verbindung mit der Open-Library-Subroutine definiert werden.
FLOAT.H    Enthält einige Parameter und Funktionen im Zusammenhang mit Gleitkommaoperationen.
GRAPHICS.H erklärt verschiedene Funktionen im Zusammenhang mit Grafikfunktionen, konstante Definitionen von Grafikfehlercodes, verschiedene Farbwerte für verschiedene Treiber und einige spezielle Strukturen, die von den Funktionen verwendet werden.
IO.H   Enthält die Struktur und Beschreibung von E/A-Unterprogrammen auf niedriger Ebene.
LIMIT.H   Enthält Informationen wie Umgebungsparameter, Kompilierungszeitlimits und Nummernbereiche.
MATH.H   Erklärt die mathematische Operationsfunktion, definiert auch das HUGE VAL-Makro und erklärt die spezielle Struktur, die von Matherr und Matherr-Unterprogrammen verwendet wird.
MEM.H   Beschreibt einige Speicherbetriebsfunktionen (von denen die meisten auch in STRING.H beschrieben sind).
PROCESS.H Beschreibt die verschiedenen Funktionen des Prozessmanagements, die Strukturbeschreibung von Spawn... und EXEC... Funktionen.
SETJMP.H Definieren Sie den von den Funktionen longjmp und setjmp verwendeten JMP-Buf-Typ und beschreiben Sie diese beiden Funktionen.
SHARE.H    Definieren Sie die Parameter der Dateifreigabefunktion.
SIGNAL.H   Definieren Sie die Konstanten SIG[ZZ(Z] [ZZ)]IGN und SIG[ZZ(Z] [ZZ)]DFL, um die beiden Funktionen Rajse und Signal zu veranschaulichen.
STDARG.H   Definition von Makros zum Lesen von Funktionsparametertabellen. (Wie vprintf, vscarf-Funktionen).
STDDEF.H Definiert einige öffentliche Datentypen und Makros.
STDIO.H Definiert die von Kernighan und Ritchie in Unix System V definierten Standard- und erweiterten Typen und Makros. Definiert außerdem vordefinierte Standard-E/A-Streams: stdin, stdout und stderr, die E/A-Stream-Unterroutinen beschreiben.
STDLIB.H erklärt einige häufig verwendete Unterroutinen: Konvertierungsunterroutinen, Such-/Sortierunterroutinen usw.
STRING.H   Beschreibt einige String-Operationen und Speicheroperationsfunktionen.
SYSSTAT.H Definiert einige symbolische Konstanten, die beim Öffnen und Erstellen von Dateien verwendet werden.
SYSTYPES.H erklärt die ftime-Funktion und die timeb-Struktur.
SYSTIME.H Definiert den Zeittyp time[ZZ(Z] [ZZ)]t.
TIME.H    Definieren Sie die Struktur der Zeitkonvertierungsunterroutinen asctime, localtime und gmtime sowie die von ctime, difftime, gmtime, localtime und stime verwendeten Typen und stellen Sie Prototypen dieser Funktionen bereit.
VALUE.H Definiert einige wichtige Konstanten, darunter solche, die von der Maschinenhardware abhängen, und solche, die für die Kompatibilität mit Unix System V angegeben sind, einschließlich der Bereiche von Gleitkommawerten und Werten mit doppelter Genauigkeit.

Verwandte Empfehlungen:

PHP-Textmanipulationsklasse_PHP-Tutorial

Vergleichsseite für die Sammlung von PHP-Textmanipulationsmethoden 1/2_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonVergleich der Sammlung von PHP-Textoperationsmethoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn