私は、文字ごとにUTF-8要素を含むファイルを読み取る小さなプログラムを作成中です。文字を読み取った後、それを他のいくつかの文字と比較し、一致する場合は、ファイル内の文字をアンダースコア「_」に置き換えます。
(実際には、特定の文字がアンダースコアに置き換えられたファイルの複製が作成されます。)
ここでどこを台無しにしているのか正確にはわかりませんが、どこにでもある可能性が高いです。
これが私のコードです:
FILE *fpi;
FILE *fpo;
char ifilename[FILENAME_MAX];
char ofilename[FILENAME_MAX];
wint_t sample;
fpi = fopen(ifilename, "rb");
fpo = fopen(ofilename, "wb");
while (!feof(fpi)) {
fread(&sample, sizeof(wchar_t*), 1, fpi);
if ((wcscmp(L"ά", &sample) == 0) || (wcscmp(L"ε", &sample) == 0) ) {
fwrite(L"_", sizeof(wchar_t*), 1, fpo);
} else {
fwrite(&sample, sizeof(wchar_t*), 1, fpo);
}
}
ファイル名の生成に関係するコードは省略しました。ケースに提供するものがないためです。単なる文字列操作です。
このプログラムに単語を含むファイルをフィードすると、次のγειά σου κόσμε.
ように返されます。
γει_ σου κόσμ_.
ほとんどの結果は非常に一般的であるか、UTF-8 に関してまったく異なることについて話しているため、インターネットを検索してもあまり役に立ちませんでした。なんらかの理由で、誰も単一の文字を操作する必要がないようです。
私を正しい方向に向けてくれるものは何でも大歓迎です。必ずしも、提出したコードの単純な修正バージョンを探しているわけではありません。wchar メカニズムが正確にどのように機能するかを理解するのに役立つ洞察に満ちたコメントに感謝します。全体の wbyte、wchar、L、no-L は、私にとって混乱です。
よろしくお願いいたします。