我需要用C编写一个Caeser密码,所以我正在一步一步地明白了一切我做的:')C:将所有特殊字符等效(E => E)
我需要照顾特殊字符 例如:如果用户输入
“这是一个déjàvù!” 将它转换为 “这是一个似曾相识”
是否有一个C函数能够这样做,而不是做手工为ASCII码的每个特殊字符的?
这正是我试图避免的情况:
case -85 :
case -86 :
case -87 :
case -88 :
*p = 'e';
我需要用C编写一个Caeser密码,所以我正在一步一步地明白了一切我做的:')C:将所有特殊字符等效(E => E)
我需要照顾特殊字符 例如:如果用户输入
“这是一个déjàvù!” 将它转换为 “这是一个似曾相识”
是否有一个C函数能够这样做,而不是做手工为ASCII码的每个特殊字符的?
这正是我试图避免的情况:
case -85 :
case -86 :
case -87 :
case -88 :
*p = 'e';
是否有一个C函数能够这样做,而不是做手工为ASCII码的每个特殊字符的?
Iconv将做你想做的,当你选择ASCII//TRANSLIT
作为目标编码。
哦,谢谢我不知道它是C中的一个函数:O http://www.opengroup.org/onlinepubs/009695399/functions/iconv.html – 2010-11-01 18:01:00
btw,如果你在C中有一个简单的例子,因为每个例如,我发现有40行C语言初学者无法理解的代码。谢谢:) – 2010-11-01 18:10:25
@Tristan:从快速浏览文档,我相信短版本是'cd = iconv_open(tocode,fromcode);'(可能代码为UTF-8和ASCII在你的情况下),其次是'iconv (cd,inbuf,inbufsize,outbuf,outbufsize);'(缓冲区和大小应该是你输入的拷贝地址,因为它们被iconv改变),然后检查错误,最后是'iconv_close(cd);' 。 'cd'可以多次重复使用。你可以在启动时打开它并在关机时关闭。 – Cascabel 2010-11-01 18:44:19
问题是'等价'取决于你的文化。
ü(u变音符)是否等于u或'oe'?
这相当于“我”:')。你有没有在C btw中使用iconv的例子?谢谢:) – 2010-11-01 18:11:37
对不起没有听说iconv之前 - 只是说它不是一个标准功能的原因是,除非你知道什么语言/区域设置,否则没有办法做到这一点。 – 2010-11-01 18:25:25
你想要人转换为什么? – 2010-11-01 20:03:38