在Linux中,fprintf
函數用于將格式化的輸出寫入文件流
fprintf
函數的返回值是成功寫入的字符數。如果返回值為負數,表示發生了錯誤。你可以通過檢查返回值來判斷是否有錯誤發生。#include<stdio.h>
#include <errno.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>
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;
}
errno
變量:errno
是一個全局變量,用于存儲最近一次系統調用產生的錯誤代碼。你可以檢查errno
的值來確定發生了什么錯誤。#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 (errno != 0) {
fprintf(stderr, "Error writing to file: %s\n", strerror(errno));
fclose(file);
return 1;
}
fclose(file);
return 0;
}
請注意,當使用這些方法檢查錯誤時,務必在執行其他文件操作之前清除errno
,因為它可能會被其他函數覆蓋。你可以通過將errno
設置為0來清除它。