■要求定義
– ファイルの検索をする
■検討
– ファイルがあった時
-> ファイル名をそのまま返す
$ ls
dev hello.c
$ find hello.c
hello.c
– ファイルが無かった時
-> エラーメッセージを表示する
$ find test.dat
find: ‘test.dat’: No such file or directory
– fopenとstat(非標準)を使う方法がある
fopenで存在確認
int main(){ FILE *fp = "hoge.c"; if(fopen(fp, "r") == NULL) { printf("'%s': No such file or directory\n", fp); } else { printf("%s\n", fp); } return 0; }
$ ./dev
‘hogehoge.c’: No such file or directory
メッセージをlinuxに合わせると雰囲気を出せる。
#include <stdio.h> #include <sys/stat.h> // ファイル・ディレクトリに関する情報取得 int main(){ struct stat st; FILE *fp = "hogehoge.c"; if(stat(fp, &st) != 0) { printf("'%s': No such file or directory\n", fp); } else { printf("%s\n", fp); } return 0; }
$ ./dev
‘hogehoge.c’: No such file or directory
成功すると 0 を、エラー発生時には -1を返す。
非標準なので、statよりもfopenか。
返り値が0 | 1 ってのが、2進数を扱っている実感ができて良い。