打开文件会产生意外的返回值

时间:2016-05-12 08:54:29

标签: c file file-io errno

有人可以解释一下,为什么文件开放不成功?为什么打印"文件"会给-1吗?这是char *source的问题吗?

int opf(char *source){
    int file;
    file=open(source,O_RWR);
    printf("%d",file); 
}

是否有可能做到这样的事情: file在另一个目录中,所以

int opf(char *source){
    int file;
    file=open("some_directory/ %s",source,O_RWR);
    printf("%d",file); 
}

这里我得到"从指针生成整数而没有强制转换"错误。我尝试了很多不同的东西,但我想问题在于我没有正确掌握这些概念。

1 个答案:

答案 0 :(得分:8)

来自open()的{​​{3}}(强调我的

  

成功完成后,该函数将打开该文件并返回一个表示编号最小的未使用文件描述符的非负整数。 否则,返回-1并设置errno以指示错误。如果函数返回-1,则不应创建或修改任何文件。

因此,在您的情况下,open()失败了。检查errno以获取更多详细信息。 errno的所有可能值也记录在链接页面中。

话虽如此,

  1. O_RWR似乎不是有效的模式O_RDWR是。
  2. 对于第二种方法,您可以先使用man page创建path字符串,然后将其传递给open()