我正在尝试编译和运行一个简单的目标 c 代码,但我是在 Windows 上进行的。我使用的是 GNU Step,我很难调试它并理解运行时发生的事情。我是一名 .NET 开发人员而且我总是使用 Visual Studio 中的调试器来跟踪数据流和 stuf,但在这里......真的很烦人。我没有 Mac Book,所以我也没有 XCode。
任何人都可以告诉我代码和平中有什么问题吗?这很简单,如果有 Mac 的人可以为我调试它并告诉我出了什么问题,那就太好了。
代码的想法是它逐行读出一个文本文件,然后在每 3 行代码中创建一个 NSMutableArray 对象并将其添加到另一个 NSMutableArray。这里是:
read_line 函数:
int read_line(FILE *in, char *buffer, size_t max)
{
return fgets(buffer, max, in) == buffer;
}
文本文件的内容:
Sophie Ellis-Bextor
71222
5.01
Inna Morales
61223
6.00
Kortez Domingues
41231
3.25
主要代码:
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
FILE *in;
if((in = fopen("C:...\\Input.txt", "rt")) != NULL)
{
char line[256];
NSMutableArray* resultArray = [[NSMutableArray alloc] init];
while(read_line(in, line, sizeof line))
{
NSString *currentLine = [[NSString alloc] initWithUTF8String:line];
[resultArray addObject:currentLine];
}
NSMutableArray*resultObjectsArray =[[NSMutableArray alloc] init];
NSMutableArray*tmpArray =[[NSMutableArray alloc] init];
for(int i=0 ; i <[resultArray count];i++)
{
if(i%4 == 3)
{
[resultObjectsArray addObject:tmpArray];
[tmpArray removeAllObjects];
NSLog(@"Here we add a new object");
}
else
{
[tmpArray addObject:[resultArray objectAtIndex:i]];
NSLog(@"%@",[resultArray objectAtIndex:i]);
}
}
fclose(in);
NSLog(@"First object in the result Array: %@",[[resultObjectsArray objectAtIndex:0] objectAtIndex:0]);
}
[pool drain];
我所能看到的只是在
NSLog(@"First object in the result Array: %@",[[resultObjectsArray objectAtIndex:0] objectAtIndex:0]);
行我得到下一个错误: Uncaught Exception NSRangeException, reason:Index 0 is out of range 0 (in 'objectAtIndex:')