如何在c中打开或不打开文件

时间:2013-02-04 04:09:17

标签: c

我正在尝试使用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

感谢任何人的帮助,非常感谢

3 个答案:

答案 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 );
}