gpt4 book ai didi

c - 如何在 C 中对 'æ' 、 'ø' 和 'å' 进行操作

转载 作者:太空狗 更新时间:2023-10-29 14:57:13 24 4
gpt4 key购买 nike

我用 C 编写了一个程序,它可以替换或删除字符串中的所有元音。此外,我希望它适用于这些字符:'æ'、'ø'、'å'。

我曾尝试使用 strstr(),但如果不替换包含“æ”、“ø”或“å”的行中的所有字符,我就无法实现它。我也读过 wchar ,但这似乎只会使一切复杂化。

程序正在处理这个字符数组:

char vowels[6] = {'a', 'e', 'i', 'o', 'u', 'y'};

我试过这个数组:

char vowels[9] = {'a', 'e', 'i', 'o', 'u', 'y', 'æ', 'ø', 'å'};

但它给出了这些警告:

warning: multi-character character constant [-Wmultichar]

warning: overflow in implicit constant conversion [-Woverflow]

如果我想用“a”替换每个元音,它会将“å”替换为“�a”。

我也试过 UTF-8 hexval由 'æ'、'ø' 和 'å' 组成。

char extended[3] = {"\xc3\xa6", "\xc3\xb8", "\xc3\xa5"};

但它给出了这个错误:

excess elements in char array initializer

有没有一种方法可以使它工作而不会使它变得太复杂?

最佳答案

有两种方法可以使该角色可用。第一个是 code pages ,这将允许您 use extended ASCII characters (值 128-255),但代码页依赖于系统和区域设置,因此一般来说这不是一个好主意。

更好的选择是使用 unicode . unicode 的典型情况是使用宽字 rune 字,like in this post :

wchar_t str[] = L"αγρω";

您的代码的关键问题是您试图 compare ASCII with UTF8, which can be a problem .这个问题的解决方案很简单:将所有文字转换为宽字符 UTF8 等价物,以及您的字符串。您需要使用通用编码而不是混合编码,除非您有转换函数来帮忙。

关于c - 如何在 C 中对 'æ' 、 'ø' 和 'å' 进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32694980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com