Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 向用户询问信息并返回该信息_Objective C - Fatal编程技术网

Objective c 向用户询问信息并返回该信息

Objective c 向用户询问信息并返回该信息,objective-c,Objective C,我试图要求用户输入他们的姓名,然后返回;“你好,还有他们的名字”。我知道我遗漏了一些简单的东西,但我不知道它是什么 int main(int argc, const char * argv[]) { @autoreleasepool { NSString * name = @""; NSLog(@"What is your name?"); scanf("%@", &name); NSLog(@"Hello %

我试图要求用户输入他们的姓名,然后返回;“你好,还有他们的名字”。我知道我遗漏了一些简单的东西,但我不知道它是什么

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

        NSString * name = @"";

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

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

    }
}

你想把目标C和目标C混在一起。这有点棘手,但让我看看是否可以帮你指出正确的方向

第一,改变:

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

看看是否效果更好

,而NSString是一个目标C对象,它实际上不适用于“
scanf

(64意味着有足够的缓冲区空间容纳64个字符,如果超出这个范围,应用程序可能会崩溃)

此外,改变:

NSLog(@"Hello %@",name);
为此:

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

格式中的“
%s
”告诉NSLog您传递的是C样式的字符串,而不是NSString对象。

您在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);
printf("What is your name?");
char name[40];
scanf("%s", name);
printf("Hello %s", name);