如何读取Objective-C中的输入?

时间:2014-04-08 01:20:11

标签: objective-c input stdin scanf

我正在尝试编写一些简单的代码,搜索两个字典中的字符串,如果字符串出现在两个字典中,则打印到控制台。我希望用户能够通过控制台输入字符串,然后将字符串作为变量传递给消息。我想知道如何从控制台获取getting字符串并将其用作以下方法调用中的参数。

[x rangeOfString:"the string goes here" options:NSCaseInsensitiveSearch];

我不确定如何从用户那里获取字符串。我是否将scanf()或fgets()用于char,然后将其转换为NSSstring,或者只是扫描到NSString本身。我当时想知道如何将该字符串作为参数传递。请帮忙:

这是我到目前为止的代码。我知道这不简洁,但我只想完成工作:

#import <Foundation/Foundation.h>
#include <stdio.h>
#include "stdlib.h"


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

    @autoreleasepool {

        char *name[100];
        printf("Please enter the name you wish to search for");
        scanf("%s", *name);
        NSString *name2 = [NSString stringWithFormat:@"%s" , *name];


        NSString *nameString = [NSString stringWithContentsOfFile:@"/usr/share/dict/propernames" encoding:NSUTF8StringEncoding error:NULL];
        NSString *dictionary = [NSString stringWithContentsOfFile:@"/usr/share/dict/words" encoding:NSUTF8StringEncoding error:NULL];

        NSArray *nameString2 = [nameString componentsSeparatedByString:@"\n"];
        NSArray *dictionary2 = [dictionary componentsSeparatedByString:@"\n"];

        int nsYES = 0;
        int dictYES = 0;

        for (NSString *n in nameString2) {

            NSRange r = [n rangeOfString:name2 options:NSCaseInsensitiveSearch];

            if (r.location != NSNotFound){
                nsYES = 1;
            }
        }
        for (NSString *x in dictionary2) {
            NSRange l = [x rangeOfString:name2 options:NSCaseInsensitiveSearch];
            if (l.location != NSNotFound){
                dictYES = 1;

            }
        }

        if (dictYES && nsYES){
            NSLog(@"glen appears in both dictionaries");
        }

    }
}

感谢。

1 个答案:

答案 0 :(得分:0)

在C中以交互方式安全地从标准输入读取kind of involved。标准函数需要一个固定大小的缓冲区,这意味着某些输入将太长(并损坏您的内存!)或者您必须在循环中读取。不幸的是,Cocoa并没有给我们提供很多帮助。

对于完全读取标准输入 (如果您希望输入文件超过标准输入),则有NSFileHandle,这使得它非常简洁。但是对于你想要在这里进行的交互式阅读和写作,你几乎必须使用链接的答案进行阅读。

一旦你在C字符串中读到了一些输入,就可以轻松地将它变成一个NSString,例如+[NSString stringWithUTF8String:]