2012-05-14 3 views
6

Es gibt dieses Ding, das mir Kopfschmerzen in C-Programmierung gibt, wenn ich mit dem Lesen von Dateien beschäftige.Wie öffne ich eine Datei zum Einlesen von C?

Ich verstehe nicht den Unterschied zwischen diesen zwei Methoden:

FILE *fd; 
fd=fopen(name,"r"); // "r" for reading from file, "w" for writing to file 
         //"a" to edit the file 

fd gibt NULL zurück, wenn die Datei nicht geöffnet werden kann, nicht wahr?

Das zweite Verfahren, das ich verwende, ist:

int fd; 
fd=open(name,O_RDONLY); 

fd wäre -1, wenn ein Fehler beim Öffnen der Datei auftritt.

Würde jemand freundlich genug sein, mir das zu erklären? Vielen Dank im Voraus :)

Antwort

10

Mit fopen() können Sie die C stdio-Bibliothek verwenden, die viel bequemer als die Arbeit direkt mit Dateideskriptoren sein kann. Zum Beispiel gibt es kein integriertes Äquivalent zu fprintf (...) mit Dateideskriptoren.

Wenn Sie keine Low-Level-I/O-Operationen durchführen müssen, erfüllen die Funktionen von stdio die meisten Anwendungen sehr gut. Es ist bequemer und in den normalen Fällen genauso schnell, wenn es richtig verwendet wird.

+1

Also sollte ich das verwenden, mit dem ich mich wohler fühle, oder? fopen() ist es dann. – appoll

+2

Ich denke, das wäre ein guter Weg zu gehen. Und ja, es gibt NULL bei Fehler zurück. Wenn es fehlschlägt, können Sie errno überprüfen, um herauszufinden, warum. –