我老老实实做了a)使用关键词进行搜索,b)在询问之前阅读“类似标题的问题”。
此外,我试图让这个问题更简洁,但在这种情况下,我很难做到这一点。如果你觉得这个问题过于冗长,我就明白了。只是不要试图回答。
我正在尝试编写非常简单的Objective-C程序,这些程序反映了我的入门java类中的基本作业。我在夏天完成了一本客观的书,现在我想在objective-c中做很多练习题,同时我还要练习java练习题。我正在避开Objective-c GUI环境,只想专注于使用该语言一段时间。我还有很多东西要学习如何解决问题。
我从我的java作业复制的程序是标准类型。我要求用户通过控制台输入数字和输入字符串。我能够使用扫描f在此处找到的示例从控制台获取数字输入。 (我将在下面列出几个代码行)。但我不确定如何获取控制台输入并将其存储在字符串(NSString)中。我正在尝试学习使用apple文档并找到一个扫描类型命令的参考,但我无法弄清楚如何使用该命令。似乎很可能是
scanCharactersFromSet:(NSCharacterSet )scanSet intoString:(NSString * )name;
这是我的理解和工作
int age = 0;
NSLog (@"How old are y'all?");
scanf("%d", &age);
NSLog (@"\n Wow, you are %d !", age);
但我不明白如何拾取名为'name'的NSString。我认为我应该把我的'name'作为指针,因为这个类是NSString。
(顺便说一下,我确实尝试使用scanf来拾取字符串,但是编译器不喜欢我尝试将scanf与name一起使用。它说我不应该使用'scanf',因为它期待一种不同的类型数据。我不确定我在哪里找到数据类型'我'。我正在查看我的文字以寻找不同的想法。我猜测scanf与'scanfloat'有关,它显然处理数字数据,所以这是不是一个大惊喜)
我意识到'scanf'不是正确的命令(我真的不明白为什么我甚至无法在苹果文档中找到scanf - 也许它是C?)
我猜测scanCharactersFromSet可能是正确使用的东西,但我只是不明白你是如何弄清楚命令中的位置。我想我倾向于通过实例学习,而我还没有找到一个例子。我想通过阅读文档来弄清楚如何正确学习。但我还没有。
NSString* name ;
scanf("%i", &name);
//scanCharactersFromSet:(NSCharacterSet *)scanSet intoString:(NSString **)name;
...
我的书的目的是让我进入一个gui环境,所以它不涉及输入。
感谢您提供给我的任何指示。
月桂
答案 0 :(得分:15)
我建议加强C. Objective-c是C上的一个薄层,知识会一遍又一遍地为自己买单。
C有多种阅读方式:
http://www.ehow.com/how_2086237_read-string-c.html
例如:
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
char str[50] = {0}; // init all to 0
printf("Enter you Last name: ");
scanf("%s", str); // read and format into the str buffer
printf("Your name is %s\n", str); // print buffer
// you can create an NS foundation NSString object from the str buffer
NSString *lastName = [NSString stringWithUTF8String:str];
// %@ calls description o object - in NSString case, prints the string
NSLog(@"lastName=%@", lastName);
[pool drain];
return 0;
注意:简单的scanf可以缓冲溢出。围绕这个有多种方法。见:
答案 1 :(得分:15)
这就是Objective C的样子:
NSString *FNgetInput() {
@autoreleasepool {
return [[[NSString alloc] initWithData:[[NSFileHandle fileHandleWithStandardInput] availableData] encoding:NSUTF8StringEncoding] stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
}
}
答案 2 :(得分:5)
从cocoa中的标准输入(或任何其他文件句柄)获取数据的方法是使用NSFileHandle
类。查看+fileHandleWithStandardInput
答案 3 :(得分:0)
以下是在2020年使用Objective-C获取用户输入的方法:
main.m
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
char str[50] = {0}; // init all to 0
printf("Enter you Last name: ");
scanf("%s", str); // read and format into the str buffer
printf("Your name is %s\n", str); // print buffer
// you can create an NS foundation NSString object from the str buffer
NSString *lastName = [NSString stringWithUTF8String:str];
// %@ calls description o object - in NSString case, prints the string
NSLog(@"lastName=%@", lastName);
return 0;
}
return 0;
}
编译并运行:
$ clang -framework Foundation main.m -o app