概要

指定した全角文字列を半角文字列に変換する。

コマンドラインで動作します。
使用方法
zen2han 全角文字列
コマンドを実行すると半角文字列が表示されます。
実行例


zen2han "!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}"
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}

ソースコード

UNICODEに対応し、32bit/64bit対応です。
zen2han関数は引数のUNICODE文字列を半角のUNICODE文字列に変換します。
変換対象はUNICODEで文字コードFF01~FF5D(上記の実行例参照)と全角スペースで変換後0021~007Dと半角スペースになります。
上記のコードは縦書き用の文字コードに該当します。

// 全角数字・英字を半角に変換する。Visual C++ 2008 UNICODE

#include <windows.h>
#include <stdio.h>
#include <locale.h>
#include <tchar.h>


TCHAR* zen2han(TCHAR* s){
        TCHAR* p=s;
        while(*p){
                if(0xff01<=*p  && *p<=0xff5d){    //      全角数字英字記号の場合
                        *p-=0xff00-0x20;
                }else if(*p==_TEXT(' '))
                        *p=_T(' ');
                ++p;
        }
        return s;
}


void _tmain(int argc,TCHAR** argv){
        _tsetlocale(LC_ALL,_TEXT(""));
        zen2han(argv[1]);
        _putts(argv[1]);
}

ソース・実行ファイル