Char GNUstep:scanf不接受字符

Char GNUstep:scanf不接受字符,char,scanf,gnustep,Char,Scanf,Gnustep,我决定试用Objective C。因为我没有Mac笔记本电脑,所以我在我的电脑上安装了GNUStep。从一开始,我就有以下问题 代码: //第一个程序 #进口 int main(int argc,const char*argv[] { NSAutoreleasePool*池=[[NSAutoreleasePool alloc]init]; char-nameC[50]; NSLog(@“输入您的姓名:”); scanf(“%c”、&nameC); NSLog(@“名称为:%c”,nameC);

我决定试用Objective C。因为我没有Mac笔记本电脑,所以我在我的电脑上安装了GNUStep。从一开始,我就有以下问题

代码:

//第一个程序
#进口
int main(int argc,const char*argv[]
{
NSAutoreleasePool*池=[[NSAutoreleasePool alloc]init];
char-nameC[50];
NSLog(@“输入您的姓名:”);
scanf(“%c”、&nameC);
NSLog(@“名称为:%c”,nameC);
[泳池排水沟];
返回0;
}
这就是我得到的:

试过unichar,同样的东西。有人知道发生了什么事吗


谢谢大家!

您可能会被以下事实所迷惑:
nameC
是一个
char
数组,因此您在
scanf
NSLog
中使用
%c
。正如Igor Tupitsyn所评论的,您应该使用
%s
——但在这两个函数中都使用

然而,请注意;最好使用
fgets
,然后使用
sscanf

NSLog(@“Name is:%s”,nameC);
// First program

#import <Foundation/Foundation.h>

int main (int argc, const char* argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
char nameC[50];
NSLog(@"ENter your name: ");
scanf("%c", &nameC);
NSLog(@"Name is: %c", nameC);
[pool drain];
return 0;
}