在Objective-C中使用fopen()
Using fopen() in Objective-C
本文关键字:fopen Objective-C 更新时间:2023-10-16
我对由于这段代码中的错误而导致的崩溃感到困惑:
FILE *fid200;
fid200 = fopen ( "Length200Vector.txt" , "w" );
if (fid200 == NULL)
perror("Error opening Length200Vector.txt");
for (int n = 0; n<200; n++) {
if (n == 0) {
fprintf (fid200, "%f", self.avgFeatureVect[0][n]);
}
else {
fprintf (fid200, ", %f", self.avgFeatureVect[0][n]);
}
}
fprintf (fid200, "n");
fclose(fid200);
错误是:error open Length200Vector.txt: Operation not allowed .
该文件位于项目的Resources文件夹中,这一行在.mm文件中执行。在.cpp文件的同一项目中,我使用几乎完全相同的代码,运行没有问题。这个问题似乎无法解决……
谢谢
关于你的评论,这是一个iOS应用程序:你不能(iOS的沙箱)来执行修改 (fopen()"w")文件访问iOS应用程序中的任何事情除了文件位于您的应用程序"文档"目录(或通用应用程序资源~/图书馆/应用支持"包ID"目录和临时文件的目录返回调用NSTemporaryDirectory()函数[1])。
像这样访问"Documents"目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docs_dir = [paths objectAtIndex:0];
如果你已经有一个资源文件,你需要在应用程序的执行过程中修改,你必须先把它复制到"Documents"目录,然后再修改。
[1] http://developer.apple.com/library/ios/文档/FileManagement/概念/FileSystemProgrammingGUide/AccessingFilesandDirectories AccessingFilesandDirectories.html #//apple_ref/doc/uid/TP40010672-CH3-SW1
相关文章:
- 如何将数组从Objective-C发送到C++函数
- 试图创建流或fopen时程序崩溃
- 使用 fopen 打开 .pak 文件并使该文件应用于 const 无符号字符* (C++)
- fopen 在 gdb 中返回 NULL
- 在 Objective-C++ -> EXC_BAD_ACCESS Error 中使用"new"关键字
- Mac Snow Leopard 上的 Qt 5.3.2:ld:在架构x86_64 [clang、Objective-C
- 创建跨平台 C++ 触摸管理器.在 c++ 中传递 Objective-c 对象涉及代码
- C++对象作为 Objective-C++ 属性
- fopen 在创建大量文件后因 EFBIG "File too large" 而失败
- 将.cpp文件中的数据传递给Objective c ViewController
- fopen 与常量字符 * 从 QString 是不可能的
- 为什么这个来自 Objective-C++ 的dynamic_cast在调试中成功但在发布时失败?
- 在C++中打开的带有"fopen"的mmap文件
- Objective-C 如何使用向量对?
- 在 Objective-C 和 Swift 之间委托问题
- Objective-C C++ 包装器 类型错误的不完整定义
- 无法使用 fopen() 加载文件
- EXC_BAD_ACCESS Xcode,来自我的 Objective-C++ 和 swift 桥接标头中的 C++ 包
- 在 Objective-C++ 中应用于__weak指针时,通过关键字推导类型"auto"规则是什么?
- 在Objective-C中使用fopen()