この「abcd汉字efg」を含む文字列を逆にする方法について問題が発生しました。
str_to_reverse = "abcd汉字efg"; /* those non-ASCII chars are Chinese characters, each of them takes 2 bytes */
復帰後は、次のようになります。
str_toreverse = "gfe字汉dcba";
文字列を逆にするには、ASCII 以外の文字を特定する必要があると考えました。単純にすべてのバイトを逆にするだけでは正しい答えが得られないと思うからです。
どうすればいいですか?
PS: このプログラムは 32 ビットの Ubuntu で作成しました。次に、すべてのバイトを印刷しました:
for(i = 0; i < strlen(s); i++)
printf("%c", s[i]);
「汉字」の代わりに意味不明なテキストが表示されました。