0

したがって、複数行の文字列をエンコードし、HTTP 経由でサーバーに送信しようとしています。この文字列をエンコードしています。

#include <stdio.h>
int main(void) 
{
     printf(\"Code Cabana!\");
     return 0;
}

そして、私NSLogがこれを得ると:

151657384nclude23Cstdio.h3.825303E-2990X1.242D78P-1047220220220220220220220220220220220220 0nt2ain(void)27B0X1.16BC009216BCP-877220220220220220220220220220220220220220220 0xe7fe00rintf(硨ode⭸abana!2;2202202202202202202202202202202202202202202eturn222022022022022022022022022022022022020A15203843

このコードを使用してエンコードしています:

NSString *urlCode = [[NSString stringWithFormat:@"#include <stdio.h>\n int main(void){\nprintf(\"Code Cabana!\");return 0;\n}"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
4

1 に答える 1

0

NSLog(urlCode)を使用しないでください。必要に応じて使用しNSLog(@"%@", urlCode)てください。

これを行うと、UTF-8 で URL エンコードされた C ソースは次のようになります。

%23include%20%3Cstdio.h%3E%0A%20int%20main(void)%7B%0Aprintf(%22Code%20Cabana!%22);return%200;%0A%7D

それはおそらくあなたが求めているものです。

コンパイルされたコードをまったく実行しない場合を除き、ネットワーク経由で C ソース コードをコンパイラに送信することには、セキュリティ上の大きな影響があるとだけ言っておきます。

コンパイラの失敗に関しては、 %22 は直線引用符"であるため、他の引用符は、最後の「スマート」エディターからのコピーアンドペーストである可能性があります。

于 2012-09-22T19:18:29.110 に答える