概要

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

コマンドラインで動作します。
使用方法
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]);
}

ソース・実行ファイル

Visual C++ 2008用 ソース・実行ファイルのダウンロード