
No.4ベストアンサー
- 回答日時:
★アドバイス
・マイクロソフト社製のコンパイラなら全角文字コードから半角文字コードへの
変換関数があります。→_mbctombb()昔はzentohan()という名前でした。懐かしい。
http://msdn.microsoft.com/ja-jp/library/ms350177 …→『_mbctombb』
これを使えば数字以外にも英字、記号も対応する半角文字に変換できます。
サンプル:
#include <stdio.h>
#include <mbstring.h>
// メイン関数
int main( void )
{
unsigned char kazu[] = "1234567890";
unsigned char *p;
unsigned int moji;
for ( p = kazu ; *p != '\0' ; p += 2 ){
moji = (p[0] << 8) | p[1];
moji = _mbctombb( moji );
printf( "%c%c→%c\n", p[0], p[1], moji );
}
return 0;
}
または
unsigned char kazu[] = "8";
unsigned int moji;
moji = _mbctombb( (kazu[0] << 8) | kazu[1] );
printf( "%s→%c\n", kazu, moji );
※マイクロソフト社製以外のコンパイラや移植性も考えるならご自分で
全角文字→半角文字の変換するルーチンを書いて下さい。仕組みは
既にredfox63さんが回答しています。なお、いろいろな方法があります。
参考URL:http://msdn.microsoft.com/ja-jp/library/ms350177 …
回答有難う御座います。
mbctombbも初めて見た関数です。
自分ではこの関数までたどり着くことが出来ませんでした。
大変参考になり、問題解決いたしました。
どうも有難う御座いました。
No.3
- 回答日時:
質問を見誤ってました。
コードができているならそれを乗せたほうが回答に近づきますよ。
あと、環境がわかったほうがいいです。
Windowsなら
LCMapString
で、全角→半角 の変換が可能です。
Windowsでvisual studioを使ってプログラムを書いています。
LCMapStringですか?初めて見た関数です。
色々調べて物にしたいと思います。
大変参考になりました。
どうも有難う御座います。
No.2
- 回答日時:
# 全角がShift-JISならば ・・・
char wnum[] = "0123456789";
char anum[] = "0123456789";
char kazu[] = "8";
int kazu2 = -1;
char *pPos = strstr( wnum, kazu );
if ( pPos != NULL ) {
int nIndex = (int)( pPos - wnum ) / 2;
char buf[20] = {0};
strcpy( buf, &anum[nIndex], 1 );
kazu2 = atoi( buf );
}
といった具合です
# 適切なヘッダーをインクリュードしてください
この回答への補足
回答有難う御座います。
只今ヘッダをつけてインクルードしてみた結果
ビルドでいくつかエラーが発生してしまいましたので
修正をしながら色々試しています。
C言語初心者なので、redfox63が書いてくださったプログラムを読み取ることが出来ず苦戦しています。
もう少し粘って見ますので、解決いたしましたらまた改めて御礼を述べさせていただきたいと思います。
No.1
- 回答日時:
atol
strtol
この回答への補足
早速の回答有難う御座います。
自分でも色々調べた結果
atoi,atol
を使うのではないか?というところまでは辿り付いたのですが、戻り値が"0"NULLに成ってしまい。
取得したい数値とは異なってしまいます。
テストプログラム
#include <stdio.h>
#include <stdlib.h>
void main()
{
char kazu[]="8";
int kazu2;
kazu2 = atol(kazu);
printf("%d\n",kazu2);
}
早速の回答有難う御座います。
atoiで検索を掛けたところwiki等では
やはりテストプログラムの結果同様
全角数字を入れるとNULLが戻り値と成るようです。
後他に必要な処理が必要な場合何が必要なのでしょうか?
自分でも引き続き探してみます。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
住宅にカナを入力する際に丁目...
-
VBA 文字に半角が含まれて...
-
エクセルでの”々”の扱い
-
IEからEdgeへの移行に伴うIMEの...
-
COBOL・全角判定
-
メモ帳の段落の揃え方
-
半角/全角文字混在データの分...
-
ダブルコーテーションの置換
-
全角英数字の必要性が理解できない
-
封筒の宛先で縦書きの書き方
-
正規表現で、全角文字を半角文...
-
Word2007の全角文字、全角スペ...
-
.NET3.5におけるキーボードの「...
-
差し込み印刷について教えてく...
-
全角/半角キーをSendkeys関数で...
-
「一角」って何でしょうか
-
エクセルにMicrosoft Barcode C...
-
エクセルの検索が正しくできな...
-
VB.net、テキストボックス入力...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
住宅にカナを入力する際に丁目...
-
英数字のみ全角から半角に変換
-
VBA 文字に半角が含まれて...
-
IEからEdgeへの移行に伴うIMEの...
-
全角英数字の必要性が理解できない
-
COBOL・全角判定
-
word差し込み印刷 半角カタカ...
-
VB.net、テキストボックス入力...
-
char型全角数字から、int型半角...
-
プログラミングでは、半角括弧...
-
メモ帳の段落の揃え方
-
エクセルにMicrosoft Barcode C...
-
エクセルの検索が正しくできな...
-
封筒の宛先で縦書きの書き方
-
エクセルでの”々”の扱い
-
全角/半角キーをSendkeys関数で...
-
.NET3.5におけるキーボードの「...
-
VBで、String型のデータが、...
-
Accessで日付や数値を全角で表...
-
明細書の英数字の全角・半角に...
おすすめ情報