我创建了一个名为" test"的文件。但是我无法用fopen打开它。 这是代码 -
#include<stdio.h>
int main()
{
FILE *fp;
fp=fopen("test.txt","r");
if(fp==NULL)
{
perror("Error: ");
}
fclose(fp);
return 0;
}
当我运行上面的代码时,我得到以下输出:
Error: Invalid argument
可能是什么原因? perror什么时候返回&#34;无效的参数&#34;错误消息?
答案 0 :(得分:2)
答案 1 :(得分:1)
尝试使用-g进行编译。这使您可以使用gdb逐步调试程序;查找如何使用它。使用stat(2)可能更好的方法。下面是一个代码示例,如果文件不存在或者不是常规文件,将返回错误:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
struct stat s;
int check = stat("test.txt", &s);
if(check != 0){
printf("ERROR: File does not exist!\n");
return -1;
}
return 0;
}
Stat在struct stat
中存储了很多关于文件的信息(例如长度,类型等),在这种情况下命名为&#34; s&#34;。它还返回一个整数值,如果该文件不存在,则该值不为零。