単純な目的の C コードをコンパイルして実行しようとしていますが、Windows で実行しています。GNU ステップを使用していますが、デバッグして実行時に何が起こっているのかを理解するのは非常に困難です。私はいつも Visual Studio のデバッガーを使用してデータ フローと stuf をたどっていますが、ここでは……本当に面倒です。Mac Book を持っていないので、XCode も持っていません。
その平和なコードの何が問題なのか誰か教えてもらえますか?それは非常に簡単で、Mac を持っている人が私のためにそれをデバッグして何が悪いのか教えてくれたら素晴らしいことです。
このコードの考え方は、テキスト ファイルを 1 行ずつ読み取り、コードの 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:')