询问用户信息并返回该信息

时间:2014-11-19 05:06:45

标签: objective-c

我想让用户输入他们的名字,然后返回; “你好,他们的名字”。我知道它缺少一些简单的东西,但我只是不知道它是什么。

int main(int argc, const char * argv[]) {
    @autoreleasepool {

        NSString * name = @"";

        NSLog(@"What is your name?");
        scanf("%@", &name);

        NSLog(@"Hello %@",name);

    }
}

2 个答案:

答案 0 :(得分:1)

您正在尝试将Objective-C和C混合在一起。这有点棘手,但让我看看我是否可以帮助指出正确的方向。

首先,改变:

NSString * name = @"";
scanf("%@", &name);

为:

char name[64];
scanf("%s", &name);

看看它是否更好。

scanf is a C function that works with c types,NSString是一个客观的C对象,它与#34; scanf"无法真正合作。

(" 64"意味着有足够的缓冲空间可容纳64个字符,如果你超过它,应用程序可能会崩溃)。

另外,改变:

NSLog(@"Hello %@",name);

到此:

NSLog(@"Hello %s",name);

As" %s"格式告诉NSLog你传递的是C风格的字符串,而不是NSString对象。

答案 1 :(得分:0)

您在C中使用NSString对象,但这并不起作用。 scanf需要一个C字符串。这是一个例子:

NSLog(@"What is your name?");
char name[40];
scanf("%s", name);
NSLog(@"Hello %@",[NSString stringWithCString:name encoding:NSUTF8StringEncoding]);

或者你可以100%保持在C:

printf("What is your name?");
char name[40];
scanf("%s", name);
printf("Hello %s", name);