【发布时间】:2014-07-23 19:29:57
【问题描述】:
我正在尝试从标准输入读取字符串并将字符串上的元音替换为“_”。 当然这很简单,但我也想替换重音元音。显然,以下代码不适用于这些情况。我已经尝试了几件事,例如逐个字符地读取字符,但简而言之,请考虑 line[i]
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: 考虑使用的编码是西方 (ISO-8859-1) -> http://www.alanwood.net/demos/ansi.html
【问题讨论】:
-
你知道
65这个神奇的数字没有有是大写的'A'吗?那么为什么不简单地使用字符文字'A',它始终是大写字母'A'。 -
你有什么问题?
-
我知道,但这不是我提出的问题...
-
@user1916860,鉴于您有一个特定的代码页可以使用,您可以使用该页的字符代码。或者您可以使用支持此代码页的 Unicode 库。
-
注意,解决这个问题的一种方法是创建一串重音元音,然后使用
for(i=0;i<strlen(str);i++) printf("%c %d\n", str[i], str[i]);打印值。这应该告诉你数字是什么。
标签: c string character-encoding fgets