【发布时间】:2011-11-17 23:50:04
【问题描述】:
我对由于这部分代码的错误而不断崩溃感到困惑:
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 文件中的同一个项目中,我使用几乎完全相同的代码,可以毫无问题地运行。这个好像看不出来。。。
谢谢
【问题讨论】:
-
代码是否在执行的较早时间点运行
chdir(2)或fchdir(2)?ls -l Length200Vector.txt ; ls -ld . ; id的输出是什么?不相关——为什么复杂的if (n == 0)显然什么都不做? -
把这个放在你的
fopen行之前:NSLog(@"wd = %@", [[NSFileManager defaultManager] currentDirectoryPath]);它会打印你的资源目录路径吗? -
这是 Mac OS X 应用还是 iOS 应用?
-
请记住
perror()只是打印一条错误消息;它不会终止您的程序。如果fopen()调用失败,您仍然尝试写入文件(所有fprintf()调用也应该失败)。 -
sarnold - chdir(2) 和 fchdir(2) 不运行。 n==0 是所以第一个条目前面没有“,”。 rob mayoff - 这是一个 iOS 应用程序,NSLog 语句打印:wd = /private/var/mobile/Applications/DF60ABC3-95A7-40DD-A3F2-D1FD493138E4/cashconverter.app
标签: c++ objective-c ios fopen stdio