Analyse von Dateioperationen in C-Sprache
Neben Öffnungsoperationen und Lese- und Schreiboperationen gibt es bei Dateioperationen noch mehrere weitere gängige Operationen. Die an diesen Vorgängen beteiligten Funktionen werden im Folgenden vorgestellt.
1. Funktionen, die den Positionszeiger bewegen
Rücklauffunktion und fseek-Funktion, die Prototypen dieser beiden Funktionen sind:
void rewind(FILE *fp); Move the Positionszeiger Zum Anfang der Datei bewegen
int fseek(FILE *fp,long int offset,int origin); Bewegen Sie den Positionszeiger auf die Position der Offset-Bytes vom Ursprung
Unter anderem ist für die Parameter in der fseek-Funktion der Ursprung der Startpunkt und der Offset die Offset-Bytes vom Ursprung
Ursprung Es gibt drei Werte: SEEK_SET(0)->Anfang der Datei, SEEK_CUR(1)->aktuelle Position, SEEK_END(2)->Ende der Datei.
Hinweis: 1) Wenn die Datei im Anhängemodus geöffnet wird, funktionieren diese beiden Funktionen beim Schreiben nicht. Unabhängig davon, wohin der Positionszeiger verschoben wird, werden die hinzugefügten Daten immer am Ende der Datei angehängt.
2. Andere häufig verwendete Funktionen
1. ftell-Funktion
long int ftell(FILE *fp);
Berechnen Sie den Abstand zwischen der aktuellen Position Zeiger und der Anfang der Datei. Anzahl der Bytes. Wenn ein Fehler auftritt, wird -1L zurückgegeben.
Verwenden Sie die ftell-Funktion, um die Dateigröße zu berechnen.
2.feof function
int feof(FILE *fp);
Erkennt, ob der aktuelle Positionszeiger das Ende der Datei erreicht Datei, es gibt einen Wert ungleich Null zurück, andernfalls wird 0 zurückgegeben.
3.ferror function
int ferror(FILE *fp);
Erkennt, ob während der Dateioperation ein Fehler auftritt, ein Wert ungleich Null zurückgegeben, andernfalls wird 0 zurückgegeben
4.remove function
int remove(const char *filename);
Löscht die Datei, wenn der Löschvorgang erfolgreich ist, wird sie zurückgegeben 0, andernfalls wird ein Wert ungleich Null zurückgegeben
5.rename function
int rename(const char *oldname,const char *newname);
Die Datei umbenennen, Gibt 0 zurück, wenn die Umbenennung erfolgreich ist, andernfalls wird ein Wert ungleich Null zurückgegeben.
6.freopen-Funktion
FILE* freopen(const char *filename, const char *mode,FILE *stream);
Realisiert Eingabe und Ausgabe. Diese Funktion wird häufig beim Testen von Daten verwendet.
7.fclose function
int fclose(FILE *stream);
Schließt einen Stream, wenn er erfolgreich ist, gibt er 0 zurück, andernfalls gibt er -1 zurück Paar Der Stream muss nach Abschluss des Dateivorgangs geschlossen werden, da sonst ein Datenverlust auftreten kann.
Testprogramm:
#include<stdio.h> #include<stdlib.h> int main(void) { freopen("input.txt","r",stdin); freopen("output.txt","w+",stdout); int i; int a[10]; for(i=0;i<10;i++) { scanf("%d",&a[i]); } for(i=0;i<10;i++) { printf("%d\n",a[i]); } return 0; }
Angenommen, input.txt existiert bereits im Projektverzeichnis und die Daten in der Datei sind 1 2 -1 3 4 5 7 8 9 10. Nach der Ausführung müssen keine Daten über die Konsole eingegeben werden. Das Programm liest die Daten direkt aus input.txt und gibt die Ergebnisse dann an Output.txt aus, ohne die Ergebnisse direkt an die Konsole auszugeben.
Vielen Dank fürs Lesen, ich hoffe, es kann allen helfen. Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn)!