c - 从字符串中删除元音。

标签 c string character-encoding fgets

我正在尝试从标准输入读取字符串并用“_”替换字符串上的元音。 当然很简单,但我也想替换重音元音。显然,以下代码不适用于这些情况。我尝试了几件事,例如逐个字符地读取字符,但简而言之,考虑 line[i]<0 等的情况。

while(fgets(line, 250, stdin)){
    size=strlen(line);
    for(i=0;i<size;i++){
        if(line[i]==65 || line[i]==69 ||line[i]==73 ||line[i]==79 ||line[i]==85 ||line[i]==97 ||line[i]==101 ||line[i]==105 ||line[i]==111 ||line[i]==117){
            line[i]='_';
        }
     }
}

有什么建议吗?预先感谢您。

Ps:考虑使用的编码是Western (ISO-8859-1) -> http://www.alanwood.net/demos/ansi.html

最佳答案

您可能遇到了有符号字符与无符号字符的问题。您提供的链接上显示的重音字符的 ANSI 值大于签名字符的最大大小。这可能就是您看到负面角色值的原因。

如果您想正确解决此问题,我建议使用宽字符格式和字符常量。

如果您想要快速简单的操作,请在 for 循环中添加以下内容以查看字符如何映射到值:

printf( "%c %d\n", line[i], (int)line[i] );

然后将适当的值添加到您的 if 中。

关于c - 从字符串中删除元音。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24919290/

相关文章:

c++ - 错误: variable length array of non-POD element type 'string' (aka 'basic_string<char>' )

string - 如何保留Java中的100万个数字?

unicode - UTF16字符总数

比较内容 2D 指针 C

c - 运行程序时出现段错误和变化的输出

c - C中的别名内存

c# - 从 char 到 byte 的转换中使用的编码

c - 在 C 中使用 libxml 进行 XML 解析不显示属性名称

C#:将字符串数组划分为 N 个实例的最简洁方法 N 个项目长

python - 将字符串解释为十六进制字符序列