iOS,fopen挂起/卡住了

时间:2011-08-24 09:51:15

标签: ios fopen

我打开和读取文件的方法被卡在fopen()上。

每个人都说这是关于FIFO的东西,不得不打开另一端(这是一个血腥的文件,先出先后的东西?),但没有人甚至暗示该做什么。

const int arraySize = 256;
char tempArray[arraySize];

NSArray *paths = NSSearchPathForDirectoriesInDomains(
                                                     NSDocumentDirectory, 
                                                     NSUserDomainMask, YES
                                                     ); 
NSString* docDir = [paths objectAtIndex:0];
NSString* file = [docDir stringByAppendingString:@"/example_01.txt"];

NSLog(file);

//converting to C string
[file getCString:tempArray maxLength:arraySize encoding:NSUTF8StringEncoding];

printf("see %s\n", tempArray);

FILE *lalala;

printf("file pointer befoer: %p", lalala);
lalala = fopen(tempArray, "rb+");

printf("file pointer: %p", lalala);

fseek(lalala, 4, SEEK_SET);

char readin[5];
readin[4] = '\n';
fread(readin, 1, 4, lalala);

fclose(lalala);

3 个答案:

答案 0 :(得分:1)

也许你的tempArray太小了,内存被覆盖了。

请尝试char* tempArray = [file UTF8String];

答案 1 :(得分:1)

你在考虑使用NSFileHandle吗?

因为我没有尝试你的代码,但是你知道fopen是一个低级别的c函数,我不确定iOS上是否有一些限制(iOS上的所有应用程序都在“沙盒”中运行而且没有读取和写入旁边的任何内容的权限。)

答案 2 :(得分:1)

问题的原因:

readin[4] = '\n';

我错误地终止了我的字符串。

在Xcode中,它显示了随后显示readin的printf(),并且似乎也混淆了printf("file pointer: %p", lalala);之前的内容。

现在感觉自己像个傻瓜。

非常感谢Xuzhe和Hollance试图帮助我。