1

请多多包涵。我完全是 C 的新手,更不用说 Objective C。我正在尝试做一些应该简单但它不起作用的事情。我正在扫描一串数字,其中也包含符号。当 mini 函数遍历输入字符串时,它会将数字附加到一个新字符串,直到遇到一个运算符(我正在以自己的方式编写一个计算器作为学习练习。)现在我只是在做开始部分并扫描字符串和附加字符。这是我的代码:

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 次。

4

1 回答 1

6

你从来没有初始化number——所以当你调用-appendString:它时,你只是追加到nil,结果就nil回来了。试试这个你的第二行:

NSMutableString *number = [NSMutableString string];

Nownumber是一个空字符串对象,它与being 非常不同nil,它根本就不是对象。

于 2012-05-02T23:33:16.457 回答