我用C语言编写了一个程序,既可以替换字符串中的所有元音字母,也可以将其删除。此外,我希望它能适用于这些字符:'æ'、'ø'和'å'。
我尝试使用strstr()函数,但我没能在不替换包含'æ'、'ø'或'å'字符的行上实现它。
我还阅读了一些关于wchar的文章,但看起来只会让一切变得更加复杂。
该程序运行时作用于以下字符数组:
char vowels[6] = {'a', 'e', 'i', 'o', 'u', 'y'};
我用了这个数组:
char vowels[9] = {'a', 'e', 'i', 'o', 'u', 'y', 'æ', 'ø', 'å'};
但是它会产生以下警告:
警告:多字符字符常量[-Wmultichar]
警告:隐式常量转换中的溢出[-Woverflow]
如果我想用'a'替换每个元音字母,它会将'å'替换为"�a"。
我还尝试过使用'æ'、'ø'和'å'的UTF-8十六进制值。
char extended[3] = {"\xc3\xa6", "\xc3\xb8", "\xc3\xa5"};
但是它给出了这个错误:
字符数组初始化程序中有过多的元素
有没有不太复杂的方法让它正常工作?
UTF-8
(gcc的默认值)具有可变长度的字符,因此char
将不足以在单个char
变量中保存除ASCII以外的任何内容。 - too honest for this sitechar extended[3][3] = {"\xc3\xa6", "\xc3\xb8", "\xc3\xa5"};
- MikeCATchar
。您必须使用wchar_t
、char16_t
或char32_t
。更多信息请参见 Joel on Software 的《每个软件开发人员绝对必须了解的最小限度:Unicode 和字符集(别再找借口了!)》。 - phuclv