在Objective-C中使用fopen()

我感到困惑的一个崩溃我不断得到由于在这部分的代码错误:

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); 

错误是:打开Length200Vector.txt时出错:操作不允许。

该文件驻留在我的项目的Resources文件夹中,该行正在.mm文件中执行。 在.cpp文件中的同一个项目中,我使用几乎相同的确切代码运行没有问题。 似乎无法找出这一个…

谢谢

关于你的意见,这是一个iOS应用程序:你不允许(在iOS沙箱方面) 修改 (“w”在fopen())文件访问iOS应用程序中的任何东西,而不是位于应用程序中的文件“文档“目录(或者对于一般的应用程序来说资源是〜/ Library / Application Support /”bundle ID“目录,临时文件是通过调用NSTemporaryDirectory()函数返回的目录)。

通过这样的东西访问“文档”目录

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *docs_dir = [paths objectAtIndex:0]; 

如果您已经有一个资源文件,在执行应用程序时需要修改,那么您必须先将其复制到“Doc​​uments”目录,然后对其进行修改。

[1] http://developer.apple.com/library/ios/#documentation/FileManagement/Conceptual/FileSystemProgrammingGUide/AccessingFilesandDirectories/AccessingFilesandDirectories.html#//apple_ref/doc/uid/TP40010672-CH3-SW1