在Linux中,fprintf
函數用于將格式化的輸出寫入文件流
fprintf
函數返回成功寫入的字符數。如果返回值為負數,表示發生了錯誤。#include<stdio.h>
#include <errno.h>
#include<string.h>
int main() {
FILE *file = fopen("test.txt", "w");
if (file == NULL) {
perror("Error opening file");
return 1;
}
int ret = fprintf(file, "Hello, World!\n");
if (ret < 0) {
perror("Error writing to file");
fclose(file);
return 1;
}
fclose(file);
return 0;
}
ferror
函數檢查錯誤:ferror
函數檢查給定文件流的錯誤指示器。如果有錯誤發生,它將返回非零值。#include<stdio.h>
#include <errno.h>
#include<string.h>
int main() {
FILE *file = fopen("test.txt", "w");
if (file == NULL) {
perror("Error opening file");
return 1;
}
fprintf(file, "Hello, World!\n");
if (ferror(file)) {
perror("Error writing to file");
fclose(file);
return 1;
}
fclose(file);
return 0;
}
clearerr
函數清除錯誤:如果你確定錯誤是可以恢復的,可以使用clearerr
函數清除文件流的錯誤指示器。這樣,你可以繼續使用該文件流進行操作。#include<stdio.h>
#include <errno.h>
#include<string.h>
int main() {
FILE *file = fopen("test.txt", "w");
if (file == NULL) {
perror("Error opening file");
return 1;
}
fprintf(file, "Hello, World!\n");
if (ferror(file)) {
perror("Error writing to file");
clearerr(file);
// 嘗試恢復或采取其他措施
}
fclose(file);
return 0;
}
請注意,當處理文件I/O錯誤時,通常需要根據具體情況采取適當的措施,例如重試操作、記錄錯誤日志或通知用戶。