我正在尝试使用c程序
在txt文件上输出一些字符串但是,我需要查看我是否有权在txt文件上写入,如果没有,我需要打印出错误信息?但是,我不知道如何检测我是否成功打开文件,有人可以帮我解决这个问题吗?感谢
代码就像这样
File *file = fopen("text.txt", "a");
fprintf(file, "Successfully wrote to the file.");
//TO DO (Which I don't know how to do this)
//If dont have write permission to text.txt, i.e. open was failed
//print an error message and the numeric error number
感谢任何人的帮助,非常感谢
答案 0 :(得分:11)
您需要检查fopen的返回值。从手册页:
RETURN VALUE
Upon successful completion fopen(), fdopen() and freopen() return a FILE pointer.
Otherwise, NULL is returned and errno is set to indicate the error.
要检查写入是否成功,请检查fprintf或fwrite的返回值。要打印失败的原因,您可以检查errno,或使用perror打印错误。
f = fopen("text", "rw");
if (f == NULL) {
perror("Failed: ");
return 1;
}
perror将打印如下错误(如果未经许可):
Failed: Permission denied
答案 1 :(得分:4)
您可以执行一些错误检查,以查看对fopen和fprintf的调用是否成功。
fopen的返回值是成功时指向文件对象的指针,失败时指向NULL指针。您可以检查NULL返回值。
FILE *file = fopen("text.txt", "a");
if (file == NULL) {
perror("Error opening file: ");
}
类似地,fprintf在出错时返回负数。你可以进行if(fprintf() < 1)
检查。
答案 2 :(得分:1)
f = fopen( path, mode );
if( f == NULL ) {
perror( path );
}