在这里,我以为自己能够胜任ObjC,而这个小C型问题让我很适合。 :)此程序用于读取用户输入的字符并打印一个表达式,该表达式给出字符的十进制值。这个程序正在生成重复的NSLog()语句,我无法弄清楚原因:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
char a;
for (int i = 1; i <= 10; i++)
{
NSLog(@"Type in an ASCII character or type 'command-.' to exit.");
scanf("%c", &a);
NSLog(@"%c = %d", a, a);
}
[pool drain];
return 0;
}
这是输出:
Type in an ASCII character or type 'command-.' to exit.
a
a = 97
Type in an ASCII character or type 'command-.' to exit.
= 10
Type in an ASCII character or type 'command-.' to exit.
当我将读入变量从char更改为int并在scanf()中进行相应的格式说明符修改时,程序将按照预期在控制台中运行。 (提示用户输入一个字符,打印出值,然后再次提示。)一旦我回到char,它就会这样做。我究竟做错了什么?此外,无论我输入什么类型的char,总是有“= 10”输出。这有什么用?先谢谢你们。
答案 0 :(得分:1)
"= 10"
是回车键的ascii代码。
所以将代码更改为:
scanf("\n%c", &a);