是Objective-c的新手,是xcode的新手 在以下代码中,我在标记为B的行处获得EXC_BAD_ACCESS(代码= exc_1386_gpflt) 如果我注释掉标记为a的行,则其余代码按预期工作。 如果我注释掉标记为c的行,则其余代码按预期工作。 我错过了什么?
#import <Foundation/Foundation.h>
int main()
{
@autoreleasepool
{
NSMutableArray *queue =
[NSMutableArray arrayWithObjects:nil]; // c
NSMutableString *item =
[[NSMutableString alloc] initWithCapacity:20]; // c
[item setString:@"WHBs default string"]; // c
char select[1] = "x", entry[20];
NSLog(@"=>1: %@", item); // c
while (select[0] != '0') // a
{
NSLog(@"select [1-5, 0 for exit]:");
scanf("%1s", select); // a
if (select[0] > '0' && select[0] <= '9') // a
{
NSLog(@"ENQ: enter the item");
scanf ("%s", entry);
NSLog(@"=>2: %s", entry);
[item setString:[NSString stringWithUTF8String:entry]]; // B, c
NSLog(@"=>3: %@", item); // c
[queue addObject: item]; // c
[queue addObject: item]; // c
NSLog(@"=>4 contents of queue: %@", queue); // c
}
}
NSLog(@"===> EXIT <===");
}
return 0;
}
答案 0 :(得分:0)
这里
char select[1] = "x"
不正确,与
相同char select[1] = { 'x', '\0' };
你需要两个字符
char select[2] = "x"
一个用于结尾\ 0