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