2012-05-14 9 views
6

Jest coś, co sprawia mi ból głowy w programowaniu w języku C, gdy zajmuję się czytaniem z plików.Jak otworzyć plik do czytania w C?

nie rozumiem różnicę między tymi 2 metod:

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

fd zwraca NULL, jeśli plik nie może być otwarty, prawda?

Druga metoda jest używać:

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

FD będzie -1, gdy wystąpi błąd otwierania pliku.

Czy ktoś byłby na tyle uprzejmy, aby mi to wyjaśnić? Z góry dziękuję :)

Odpowiedz

10

Użycie fopen() umożliwia korzystanie z biblioteki C stdio, co może być o wiele wygodniejsze niż praca bezpośrednio z deskryptorami plików. Na przykład nie ma wbudowanego odpowiednika fprintf (...) z deskryptorami plików.

Jeśli nie potrzebujesz niskich wejść/wyjść, funkcje stdio doskonale sprawdzają się w większości aplikacji. Jest to wygodniejsze, a w normalnych przypadkach równie szybkie, gdy jest używane prawidłowo.

+1

Więc powinienem użyć tego, z którym jestem bardziej komfortowy, prawda? fopen() to wtedy. – appoll

+2

Myślę, że to byłaby dobra droga. I tak, zwraca NULL w przypadku błędu. Jeśli się nie powiedzie, możesz sprawdzić errno, aby dowiedzieć się dlaczego. –