在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来清除它。