C语言字符串问题
我不是学C的。但是最近公司安排个任务我不得不做。请各位大牛帮助啊:就是给你一个字符串,你要分辨出非汉字和汉字,而且要找到非汉字的位置,然后吧非汉字删除只留汉字。请大牛给我代码谢谢啊
首先,得知道这个字符串的编码。比如 big5、gb2313、GBK、gb18030、UTF-7、UTF-8、UTF-16、UTF-32 等等等等,有的还要区分big-endian和little-endian
其次,知道编码后,还得知道在这个编码中,哪些属于汉字。对于某些编码简单,就是数个范围;而对于某些编码---比如unicode---来讲,中日韩越这四个汉文字圈中相近的字在unicode中共用,难办呀。
所以,如果你没有足够的人力和物力,干这种毫无用处的事儿图个啥?
最后,我猜出题者是个外行,它只是想让你将multibyte characters中属于asc范围内的字符剔除,这就简单了。
唯一要注意的是C/C++标准中并没有规定char是signed还是unsigned(你用<0呢,还是用>127),同时又规定对signed的符号位进行位运算是未定义行为。
当然了,如果我猜测的是对的,那么出题者肯定不懂这些所以不在乎。