■要求定義
– ファイルの検索をする
■検討
– ファイルがあった時
-> ファイル名をそのまま返す
$ 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進数を扱っている実感ができて良い。