求C里面 全角半角转换函数
------解决方案--------------------------------------------------------
我在别处看了,希望对你有帮助。
第 3 区 〖 符号、字母 〗
┏━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ A3 ┃ 0 1 2 3 4 5 6 7 8 9 ┃
┣━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ 030┃ ! " # ¥ % & ' ( ) ┃
┃ 031┃ * + , - . / 0 1 2 3 ┃
┃ 032┃ 4 5 6 7 8 9 : ; < = ┃
┃ 033┃ > ? @ A B C D E F G ┃
┃ 034┃ H I J K L M N O P Q ┃
┃ 035┃ R S T U V W X Y Z [ ┃
┃ 036┃ \ ] ^ _ ` a b c d e ┃
┃ 037┃ f g h i j k l m n o ┃
┃ 038┃ p q r s t u v w x y ┃
┃ 039┃ z { | }  ̄ ┃
┗━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━┛
可以归结为第3区的全角字到相应半角的转换
以下是c语言的一种实现:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char qj_bj( char *qj );
int main(int argc,char**argv)
{
int i ;
char str[3];
for ( i = 1; i <= 93 ; i++){
sprintf(str,"%c%c",3+0xa0,i+0xa0);
printf( "File %s Line %d [%s] = [%c]\n",__FILE__,__LINE__,str,
qj_bj(str));
}
return 0;
}
char qj_bj( char *qj )
{
char ch ;
if ( strncmp(qj,"!",2) >=0 && strncmp( qj,"}",2) <= 0 ){
/* 0301 - 0393 */
ch = qj[1]-0xa0+' ';
return ch;
}
else return '\0';
}