私はCコードを作成しており、特定の文字数の後に文字列を終了する方法を見つけるのに苦労しています。たとえば、文字列data
を3文字後に終了する必要があります。それはプレーンなASCII文字列なら、私は(おそらく)マルチバイト文字列を終了しますか?
data[3] = 0;
しかし、私の場合のような何かを行うことができます任意の文字のは、EまたはAのようなマルチバイトである可能性があります。与えられた数の文字の後でこのような文字列を終了する最も良い方法は何ですか?
UPDATE:基本的に
:
char s_mon[7];
setlocale(LC_ALL, "");
strftime(s_mon, 7, "%b", tick_time);
現在のロケールがフランス語です。月は「févr」として保存されています。 "fév"にする必要がありますが、これは普遍的である必要がありますので、 "火星"のようなエントリも3文字にカットできます。
エンコーディングによってdata' –
'の宣言は何が(あなたが使用しているエンコーディングを知っている必要があります)、マルチバイトシーケンスを使用するための正確なルールがあります。これらのルールを考慮して、文字列を左から右に分析します。次に、ゼロを置くことができます(UTF-8の場合は、1つの0は大丈夫です)。 – linuxfan
'、'は必要ありません。 'マルチバイト'が必要です。 [8859-1](https://en.wikipedia.org/wiki/ISO/IEC_8859-1)は、単にコード200と192です。使用している文字セットは何ですか?どのようにコードが最初にテキストを読みましたか? – chux