如何使用C在iOS中打开文件?

如何使用C在iOS中打开文件?,ios,c,swift,posix,Ios,C,Swift,Posix,解决方案 没有错误,我没有注意。感谢Rob指出这一点 我有一个iOS应用程序,需要使用C库读取文件 当我试图从C函数访问该文件时,我只收到权限被拒绝错误(13)没有这样的文件或目录,我找不到原因。当我使用Swift创建、读取或写入时,不会发生这种情况 我尝试了几种方法在用户数据容器中创建文件URL,但C不起作用,它只适用于Swift 即使在使用Swift创建文件、在C调用前后打开、读取和验证该文件时,它也只有C中的错误 我试过的东西 更正 errno值为2 ENOENT 2 No such f

解决方案

没有错误,我没有注意。感谢Rob指出这一点


我有一个iOS应用程序,需要使用C库读取文件

当我试图从C函数访问该文件时,我只收到权限被拒绝错误(13)没有这样的文件或目录,我找不到原因。当我使用Swift创建、读取或写入时,不会发生这种情况

我尝试了几种方法在用户数据容器中创建文件URL,但C不起作用,它只适用于Swift

即使在使用Swift创建文件、在C调用前后打开、读取和验证该文件时,它也只有C中的错误

我试过的东西 更正
errno
值为2

ENOENT 2 No such file or directory

13返回值是一个文件句柄,而不是错误代码,它表明您的代码完全按照预期工作


返回非负值表示成功,返回-1表示失败。要检查特定错误,请检查
errno

返回值13是一个文件句柄,而不是错误代码,并表明您的代码完全按照预期工作


返回非负值表示成功,返回-1表示失败。要检查具体错误,请检查
errno

谢谢,我按照文档进行了操作,据我所知,这些URL是沙盒的,都在用户数据容器中。我可以在Swift中读取和写入文件,但在C中没有任何功能,即使我在C调用之前和之后创建了一个文件并在Swift中读取。谢谢,我遵循了文档,据我所知,这些URL都是沙盒,都在用户数据容器中。我可以用Swift读写文件,但C不起作用,即使我在C调用之前和之后创建了一个文件并用Swift读它。是的,谢谢,我想我尝试了太多东西,把它弄糊涂了)errno有值
enoint
errno表示系统中任何地方最后一个返回错误的东西的值。很可能是您运行的某个方法(可能是
write
)中的某个方法检查了某个文件是否存在(可能是“原子”写入/删除/移动步骤的一部分),因此
errno
将保留为“file not found”或
enoint
,直到其他操作返回错误。是的,谢谢,我想我尝试了太多的东西,把它弄糊涂了)errno有值
enoint
errno
表示系统中最后一个返回错误的东西的值。很可能是您运行的某个方法(可能是
write
)中的某个方法检查了某个文件是否存在(可能是“原子”写入/删除/移动步骤的一部分),因此
errno
将保留为“file not found”或
enoint
,直到其他操作返回错误。
// test_read_file.c
int test_read_file(const char* path) {
  access(file_path, W_OK);
  // returns 0
  
  open(path, O_RDONLY);
  // returns 13

  // errno is 2 (ENOENT: No such file or directory)

  return 0;
}
ENOENT 2 No such file or directory