2012-05-02 99 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