1

これ以上の表現が思い浮かばないので、ここで。

私は非常に簡単に、エンコードしたいメッセージを入力するプログラムに取り組んでいます。プログラムはそれを受け取り、それをコード化されたメッセージにします。各文字をアルファベットで 2 つ進めます)

その後、受信側の人はそれをプログラムに貼り付けることができ、元のテキストに戻すことができます. 文字を 2 つ上に移動するよりも少し複雑なことを考えているのは明らかですが、余談になります。

私は本当に..これのための本当に基本的なコードをいくつか持っています。私が抱えている問題は、メッセージの各文字を分割してエンコーディングを適用し、それを元に戻すことです。

私はプログラムを求めているのではなく、メッセージをエンコードできるようになるまでの方法を求めています。(例: 文字列をエンコード可能な形式に変換します)。複雑なことを意図したものではなく、非常に単純で、要点を明確にしたものです。

基本的な概要は次のとおりです(トラブルシューティングを手伝ってくれた人に感謝します):

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';

とをchoice比較する前に小文字に変換することも理にかなっています。エンドユーザーに大文字または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 に答える