gpt4 book ai didi

c++ - 在 Objective-C 中使用 fopen()

转载 作者:可可西里 更新时间:2023-11-01 03:28:36 25 4
gpt4 key购买 nike

我对由于这部分代码的错误而不断发生的崩溃感到困惑:

                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 沙箱而言)对 iOS 中的任何内容执行修改(fopen() 中的“w”)文件访问除了位于应用程序“文档”目录中的文件之外的应用程序(或者对于一般应用程序资源,~/Library/Application Support/“bundle ID”目录和临时文件通过调用 NSTemporaryDirectory() 函数返回的目录[1]).

通过这样的方式访问“Documents”目录

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

关于c++ - 在 Objective-C 中使用 fopen(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8176040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com