C:将所有特殊字符转换为等效字符(é=> e)

sf_*_*anb 4 c ascii function

我需要用C编写一个Caesar密码,所以我一步一步地去理解我正在做的一切.

我需要照顾特殊的字符示例:如果用户输入

"这是一个幻想吧!" 它会将此转换为"这是一个似曾相识"

是否有一个C函数可以执行此操作而不是手动为ASCII代码中的每个特殊字符执行此操作?

这就是我想要避免的:

case -85 :
case -86 :
case -87 :
case -88 :
    *p = 'e';
Run Code Online (Sandbox Code Playgroud)

sep*_*p2k 6

是否有一个C函数可以执行此操作而不是手动为ASCII代码中的每个特殊字符执行此操作?

当您选择ASCII//TRANSLIT目标编码时,Iconv将执行您想要的操作.

  • @Tristan:从快速浏览文档,我相信短版本是`cd = iconv_open(tocode,fromcode);`(可能代码为UTF-8和ASCII),然后是`iconv(cd,inbuf) ,inbufsize,outbuf,outbufsize);`(缓冲区和大小应该是输入副本的地址,因为它们是由iconv改变的),然后检查错误,最后是`iconv_close(cd);`.`cd`可以根据需要重复使用多次; 你可以在启动时打开它,在关机时关闭. (2认同)
  • @Tristan:你没有粘贴任何变量的声明.但是,`argv [1]`和`strlen(argv [1])`应该用副本的地址替换.(例如`char*argv1 = argv [1]; ... iconv(...,&argv1,...);`.)`iconv`修改其参数,以便之后如果出现故障,你可以查看看看如果你意外地在缓冲区中跑出了房间,并看到部分结果,依此类推. (2认同)