明らかな何かが欠けているかもしれませんが、特定のテキストのアクセント付き文字をアクセントなしの対応する文字に置き換える「痛みのない」方法はありますか?標準のANSICライブラリ/ヘッダーしか使用できないため、手が離せません。私がこれまでに試したこと:
unsigned char currentChar;
(...)
if (currentChar == 'à') {
currentChar = 'a';
}
else if (currentChar == 'è' || currentChar == 'é') {
currentChar = 'e';
}
else if (...)
ただし、これは機能しません。拡張ASCII値でアクセント付き母音を検出することもオプションではありません。これは、システムロケールによって変化することに気付いたためです。
ヒント/提案はありますか?
(アップデート)
回答ありがとうございますが、私はこの問題に対する最善のアプローチを実際に求めているわけではありません。後で考えます。上記のコードは単にアクセントのある母音を無視するため、アクセントのある母音を検出する方法を単に求めています。
(更新#2)
わかった。明確にしましょう:
#include <stdio.h>
int main(void) {
int i;
char vowels[6] = {'à','è','é','ì','ò','ù'};
for (i = 0; i < 6; i++) {
switch (vowels[i]) {
case 'à': vowels[i] = 'a'; break;
case 'è': vowels[i] = 'e'; break;
case 'é': vowels[i] = 'e'; break;
case 'ì': vowels[i] = 'i'; break;
case 'ò': vowels[i] = 'o'; break;
case 'ù': vowels[i] = 'u'; break;
}
}
printf("\n");
for (i = 0; i < 6; i++) {
printf("%c",vowels[i]);
}
printf("\n");
return 0;
}
このコードは、出力として「àèéìòù」を出力します。これが私の問題です。回答に感謝しますが、変換マップ、またはスイッチ/ケース構造を実装するように指示するのは無意味です。後で考えます。