12 Şubat 2018 Pazartesi

fopen

Giriş
Şu satırı dahil ederiz.
#include<stdio.h>
Bu metod yerine C11'deki fopen_s kullanılırsa daha iyi.

İmzası
İkinci parametre string alır. char kullanmak yanlıştır.
FILE *fp=   fopen("...",'r');
Derleyici şu uyarıyı verir.
warning: passing argument 2 of fopen makes pointer from integer without a cast
Neden FILE* Döner
Sanırım en önemli sebebi içini göstermeyen (opaque) bir yapı kullanılabilmesi. Ayrıca hata olursa null karşılatırması yapılarak anlaşılabilir.

Hata Kontrolü
Açıklaması şöyle.
Otherwise, NULL is returned and errno is set to indicate the error.
Şöyle yaparız.
FILE* fp = fopen(filename, "r");
if (fp == NULL) {
  perror(filename); 
};
Hatalardan birisi ENOENT. Açıklaması şöyle.
No such file or directory (POSIX.1-2001).
Typically, this error results when a specified path‐ name does not exist, or one of the components in the directory prefix of a pathname does not exist, or the specified pathname is a dangling symbolic link.
read + binary
Şöyle yaparız.
string filename = "...";
FILE * f = fopen (filename.c_str(), "rb");
read + update
Hem yazma hem de okuma yapılabilir. Şöyle yaparız
FILE* fd = fopen("...","r+");



Hiç yorum yok:

Yorum Gönder