我们现在将使用 scanf 例程来创建一个更加智能的三角数计算程序,它会询问用户要计算哪个三角数。下面是范例 5-4:
01 #import <Foundation/Foundation.h>
02
03 int main (int argc, const char * argv[])
04 {
05 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
06 int n, number, triangularNumber;
07
08 NSLog(@"What triangular number do you want?");
09 scanf("%i", &number);
10
11 triangularNumber = 0;
12
13 for ( n = 1; n <= number; ++n )
14 triangularNumber += n;
15
16 NSLog(@"Triangular number %i is %i\n", number, triangularNumber);
17
18 [pool drain];
19 return 0;
20 }
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
在后面的程序输出中,用户键盘键入数字 (100) 用黑体表示,以便和由程序显示的输出相区别:
2011-04-29 11:14:38.423 0504Scanf[575:903] What triangular number do you want?
100
2011-04-29 11:15:43.868 0504Scanf[575:903] Triangular number 100 is 5050
用户键入了数字 100,程序马上计算出它的结果是 5050,并显示在终端上。
需要注意的是,scanf 的第一个参数是格式字符串,它不以 @ 字符开头。
NSLog 的第一个参数始终是 NSString,而 scanf 的第一个参数是 C 风格的字符串。所以不加 @ 字符。格式字符串告知 scanf 要从控制台读入的值类型。和 NSLog 一样,%i 字符用于指定整型值。
scanf 例程的第二个参数用于指定用户键入的值存储在哪里。在这种情况下,变量 number 之前的 & 字符是必须的运算符。