1

我想不出更好的方式来描述它,所以就在这里。

我正在开发一个程序,非常简单,你输入一个你想要编码的消息,它把它变成一个编码的消息,比如把'easy'翻译成'gcua'(实现通过将字母表中的每个字母向前移动两个)

然后,接收端的人可以将其粘贴到程序中,并将其带回原始文本。我显然在想一些比将字母上移两个或其他更复杂的事情,但是,我离题了。

我真的有一些.. 非常基本的代码。我遇到的问题是将消息的每个字母分解以应用编码,然后将其重新组合在一起。

我不是要程序,我更要问的是如何达到能够对消息进行编码的程度。(例如,将字符串转换为可以编码的格式)。它并不打算详细说明,只是非常简单,直截了当。

这是一个基本大纲(感谢帮助解决问题的人):

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

        char choice, yes = 'y', no = 'n', buf[1024];

        NSString *plainText, *encrypted, *decoded;

        NSLog(@"Encode (Y) or Decode (N)");
        scanf("%c", &choice);
        choice = tolower(choice);

        if (choice == yes) {

            scanf("%1024s", buf);
            plainText = [NSString stringWithCString:buf encoding:NSUTF8StringEncoding];

        } else if (choice == no) {

        }

    }
    return 0;
}
4

2 回答 2

0

%c暗示一个char*论点,但你正在传递char**.

你应该让你的变量char,而不是char*

char choice, yes = 'y', no = 'n';

在与andchoice比较之前转换为小写也是有意义的,因为您要求最终用户输入大写yn YN

scanf("%c", &choice);
choice = tolower(choice);

编辑以回应问题的编辑:您不能使用%s将值读入NSString. 您应该使用char buf[MAX], 并限制scanf:

char buf[1024];
scanf("%1024s", buf);
plainText = [NSString stringWithCString:buf encoding:NSUTF8StringEncoding];
于 2012-04-29T03:18:16.280 回答
0

%s规范告诉它读入您已经分配的scanf数组。char但是您正在传递一个 nil 指针NSString

尝试这样的事情:

NSData *data = [[NSFileHandle fileHandleWithStandardInput] readDataToEndOfFile];
plainText = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
于 2012-04-29T03:30:15.777 回答