この 'abcd汉字efg'を含む文字列を逆にする方法については問題があります。復帰後のASCII文字とASCII以外の文字を含む文字列を逆転
str_to_reverse = "abcd汉字efg"; /* those non-ASCII chars are Chinese characters, each of them takes 2 bytes */
、それは次のようになります。
str_toreverse = "gfe字汉dcba";
私は単純にすべてのバイトを逆にすることは得られないだろうと思うので、私は、これらの非ASCII文字を識別しなきゃ、文字列を逆にする、と思いました正しい答え。
どうすればいいですか?
PS: 私はこのプログラムをUbuntu、32-bitで書いています。 はその後、私はすべてのバイトを印刷:
for(i = 0; i < strlen(s); i++)
printf("%c", s[i]);
私が代わりに「汉字」の一部ちんぷんかんぷんテキストを得ました。
あなたは非ASCII文字を識別するために必要はありません、文字列は、16ビットの文字または8ビット文字を持たなければならないのいずれか、私はあなたが混在させることができるとは思わないし、一致。その文字列の通常のASCII文字は実際には16ビットの文字です。 – Kratz
どのプラットフォームですか? VisualC(++)/ gcc/ANSI C? – xanatos
@Kratzここには素晴らしい世界があります... MBCSとUTF-8でいっぱいの世界: – xanatos