我想不出更好的方式来描述它,所以就是这样。
我正在编写一个程序,非常简单,你输入一个你想要编码的信息,然后把它变成一个编码信息,比如把'简单',例如,把它翻译成'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;
}
答案 0 :(得分:0)
%c
表示char*
参数,但您传递的是char**
。
您应该设置变量char
,而不是char*
:
char choice, yes = 'y', no = 'n';
在与choice
和y
进行比较之前,将n
转换为小写也是有意义的,因为您要求最终用户输入大写 { {1}}或Y
N
编辑以回复问题的编辑:您无法使用scanf("%c", &choice);
choice = tolower(choice);
将值读入%s
。您应该使用NSString
,并限制char buf[MAX]
:
scanf
答案 1 :(得分:0)
%s
到scanf
的规范告诉它读入您已经分配的char
数组。但是你正在向NSString
传递一个零指针。
尝试这样的事情:
NSData *data = [[NSFileHandle fileHandleWithStandardInput] readDataToEndOfFile];
plainText = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];