我想让用户输入他们的名字,然后返回; “你好,他们的名字”。我知道它缺少一些简单的东西,但我只是不知道它是什么。
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString * name = @"";
NSLog(@"What is your name?");
scanf("%@", &name);
NSLog(@"Hello %@",name);
}
}
答案 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);