OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

全角半角を調べるライブラリ関数はありますか?

  • すぐに回答を!
  • 質問No.101418
  • 閲覧数1389
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 64% (25/39)

文字列検索プログラムを作成しています。

ライブラリ関数の"strcmp"を利用せず、
==演算子で文字同士を照合しています。

問題がありまして、
検索文字列に一文字指定し検索しますと、
漢字にヒットしてしまいます。

例)
大文字(半角)   I
ヒットした文字  "終"の2バイト目

この状態を改善したいのですが何かよい方法を教えてください。宜しくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 24% (612/2465)

検索対象は全て小文字でしょうか? そうであれば、 まず、1バイト目がASCII文字か判定します。 #include <ctype.h> int isalnum(int c); 判定が成立すれば0以外の値(真)を返し、成立しなければ0を返す。 新の場合(半角文字)はそのバイトを判定し、偽であれば次のバイトを判定する。 偽の場合(半角以外文字)はそのバイトと次のバ ...続きを読む
検索対象は全て小文字でしょうか?

そうであれば、
まず、1バイト目がASCII文字か判定します。
#include <ctype.h>
int isalnum(int c);
判定が成立すれば0以外の値(真)を返し、成立しなければ0を返す。

新の場合(半角文字)はそのバイトを判定し、偽であれば次のバイトを判定する。
偽の場合(半角以外文字)はそのバイトと次のバイトをスキップして、その次のバイトを判定する。
お礼コメント
crm

お礼率 64% (25/39)

madman 様へ

お返事ありがとうございます。

説明不足で恐縮です。
検索対象はソースファイルを指定してテストを行っておりまして、
英数字は半角で大文字小文字を含み、
英数字以外は全角半角を含んでおります。

検索対象に大文字を含んでいる場合はどうなるのでしょうか?
大変興味がありますので、
ご負担にならなければ、回答をお願いできますでしょうか?
宜しくお願い致します。
投稿日時 - 2001-07-09 04:55:54


  • 回答No.2
レベル12

ベストアンサー率 75% (398/526)

 使用している文字コードによって、全く異なる処理を行う必要があるのですが、シフトJISであると仮定します。  シフトJISの全角文字は、第1バイトが0x81~0x9F、0xE0~0xEFで始まる2バイトコードなので、調べた文字がこの範囲にあれば全角なので次のバイトをスキップすればOKです。  標準ライブラリにこれを調べるものは無かったように思いますので、   int issjis1( int ...続きを読む
 使用している文字コードによって、全く異なる処理を行う必要があるのですが、シフトJISであると仮定します。

 シフトJISの全角文字は、第1バイトが0x81~0x9F、0xE0~0xEFで始まる2バイトコードなので、調べた文字がこの範囲にあれば全角なので次のバイトをスキップすればOKです。

 標準ライブラリにこれを調べるものは無かったように思いますので、
  int issjis1( int c ) ;
のような関数を自作すればよいでしょう。
お礼コメント
crm

お礼率 64% (25/39)

leaz024 様へ

お返事ありがとうございます。

やはり全角1バイト目を基準に判断するようですね。
大変参考になりました。
アドバイスどおり、
全角半角判定関数を作ってみます。

どうもありがとうございました。
投稿日時 - 2001-07-11 01:42:10
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ