😸
[C] ferror 関数
機能
ファイルストリーム上で入出力エラーが発生したかどうかを判定する関数[1]
使用例
ファイルにエラーが発生しました
と表示する
\n
は改行を表す エスケープシーケンス[2]
コード
FILE *fp = fopen("not_found.txt", "r");
if (fp == NULL) {
printf("ファイルを開けません\n");
} else {
int data = fgetc(fp);
if (ferror(fp)) {
printf("ファイルにエラーが発生しました\n");
}
fclose(fp);
}
全文
#include <stdio.h>
void main() {
FILE *fp = fopen("not_found.txt", "r");
if (fp == NULL) {
printf("ファイルを開けません\n");
} else {
int data = fgetc(fp);
if (ferror(fp)) {
printf("ファイルにエラーが発生しました\n");
}
fclose(fp);
}
}
実行結果
ファイルを開けません
入出力エラー検出
を変数から表示する
コード
FILE *fp = fopen("test.txt", "r");
if (fp != NULL) {
// 擬似的にエラーを発生させる(例:誤った操作など)
clearerr(fp);
// ここでは ferror(fp) == 0 の場合
if (ferror(fp)) {
printf("入出力エラー検出\n");
}
fclose(fp);
}
全文
#include <stdio.h>
void main() {
FILE *fp = fopen("test.txt", "r");
if (fp != NULL) {
// 擬似的にエラーを発生させる(例:誤った操作など)
clearerr(fp);
// ここでは ferror(fp) == 0 の場合
if (ferror(fp)) {
printf("入出力エラー検出\n");
}
fclose(fp);
}
}
実行結果
(このコードの場合、何も表示されません)
Discussion