2012-05-02 63 views
1

请耐心等待。我对C完全陌生,更不用说Objective C了。我正在尝试做一些简单的事情,但它不起作用。我正在扫描也包含符号的一串数字。由于迷你函数在输入字符串中运行,它会将数字附加到新字符串中,直到遇到操作符为止(我正在以自己的方式编写一个计算器,作为学习练习。)现在,我只是做开始部分和扫描字符串和追加字符。这里是我的代码:客观C解析打嗝

char userInput[99]; 
NSMutableString *number = nil; 
int i; 

printf("Please enter math: "); 
scanf("%s", userInput); 
fpurge(stdin); 

NSString *InputString = [NSString stringWithUTF8String:userInput]; 

for (i=0; i < [InputString length]; i++) { 
    char current = [InputString characterAtIndex:i]; 
    if (isalnum(current)) { 
     [number appendString:[NSString stringWithCharacters:&current length:1]]; 
     NSLog(@"%@ ", number); 
    } 
} 

对我的生活中,我似乎无法找出原因,它使打印2012-05-02 19:23:20.935 CALC[1447:403] (null),而不是为每个号码的数值跨越它来。例如,如果输入的字符串中有5个数字,则会打印5次。

回答

6

你永远不会初始化number - 因此,当你调用它-appendString:,你只追加到nil,其结果就是nil回来。试试这个你的第二个行:

NSMutableString *number = [NSMutableString string]; 

现在number是一个空字符串对象,它是被nil,这是没有对象都非常不同。

+0

谢谢!就是这样。愚蠢的我! – Osman