• 締切済み

ヘッダーファイル"jctype"について

昨夜はお世話になりました。 今日はCのヘッダファイル"jctype"についてです。 例の文字列検索プログラム作成中に、 "iskanji"関数という存在に気づきました。 関数名から日本語環境用と思われますが、 jctypeがBorland C++ Compiler には存在しないようですので、 どなたかその関数を利用する方法を教えてください。 宜しくお願いします。

みんなの回答

  • YoshiMu
  • ベストアンサー率41% (96/229)
回答No.2

念のため補足しておきますが、iskanjiという関数は現状のCコンパイラには含まれていないような気がします。 「iskanji()もないようです」と書いたはずですが。 また、十分なマニュアル、ドキュメントがない場合には、ヘッダファイル自体が重要な情報源となります。 まず、ヘッダファイルの内容を自分の目で確認してください。難しい表記が目立つのでつらくなると思いますが、最低限度とはいえ、紛れもなく正しい情報が入っています。 自分の使いたい関数が使えるのかそうでないのか、自分で調べられるようにならないと、いつまでも他人に迷惑をかけることになりますよ。 また、Borland系の処理系をご使用であれば、grepというユーティリティが使えるはずです。指定した文字列が含まれるファイルを探すためのツールです。 コマンドラインから、includeのフォルダにcdで移動して、 grep -dn iskanji *.h とすれば、iskanjiが含まれているヘッダファイルが見つからないことがわかるはずです。(ひょっとしたら見つかるかもしれませんけど) 続いて、 grep -dn ismbc *.h とすれば、たくさんの行が見つかるはず。 お試しください。 指定した文字列が含まれるファイルを検索する、という処理はエクスプローラでも十分利用できますけれど。

crm
質問者

お礼

YoshiMu 様 大変遅くなり恐縮ですが、 補足をありがとうございます。 まさに仰るとおりですね。 現在、全角半角判定を行う関数を作り、 プログラムで利用しております。 私の周りではボーランドを利用している人がいなく、 又、私自身もC言語を勉強し始めてまもないものですが、 質問に値しない質問をしてしまったと反省しております。 どうぞ、今後とも宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • YoshiMu
  • ベストアンサー率41% (96/229)
回答No.1

そういえば、jctypeってVC++6.0にもC++Bulder5.0にも存在しませんね。iskanji()もないようです。 両者にあるそれらしきヘッダファイルは"mbstring.h"みたいですね。Borland C++にもあるのではないかと思います。 ここにある、_ismbc??????系の関数を使用されてはいかがでしょうか? 参考URLはマイクロソフトのものですが、ざっと見た感じなので自信はありませんけど、使い方は変わらないようですから十分役に立つと思います。

参考URL:
http://www.microsoft.com/japan/developer/library/vccore/_crt_character_classification.htm
crm
質問者

お礼

YoshiMu 様へ お返事ありがとうございます。 早速、"iskanji" 及び "iskanji2"を、 ヘッダファイル "mbstring.h" で試してみましたが、 残念ですがエラーになってしまいました。 やはり一文字ずつ照合(==演算子)するのは大変ですね。 今日のことですが、 一文字アルファベットが 全角文字の2バイト目にヒットする状況を、 何とか回避しましたけれど、 その弊害?として、 検索文字列に全角文字を指定しても未検出になってしまいます。 やはり文字コードは難しいですね。 結局はstrcmp等を利用せざるを得ないんですかね。 (あるものは利用すべきですが...) サイト方も参考にさせていただきました。 どうもありがとうございました。 ismbc?????関数で挑戦してみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • #includeするヘッダファイルについて

    最近、C++を始めたのですが自分の使いたい関数が どのヘッダファイルに含まれているのか判らず、困っています。 JavaのAPIの様な物ってないのでしょうか? あればとても便利なのですが・・・ もし、無いのでしたら皆さんはどの様にして捜しているのですか? どなたか教えて頂けませんか。 (使っているコンパイラはBorland C++ Compiler 5.5 です)

  • Cランタイムライブラリのヘッダでエラーが出る

    文字列クラスを作成しているのですが、コンパイルしたところ、 以下の様なエラーが出ました。 エラー E2268 C:\bcc55\Include\tchar.h 641: 未定義の関数 'strlen' を呼び出した(関数 _strncnt(const char *,unsigned int)) これはどういうことなのでしょうか。なぜ「tchar.h」でエラーが出るのでしょうか。どなたか原因が分かる方はいらっしゃらないでしょうか。 ちなみに、環境はWindows XP、Borland C++ 5.5.1です。

  • ファイルをフォルダに入れて構造化する

    私は趣味でCプログラムをしているのですが、自分の書いたプログラムのファイルが多くなった場合フォルダにまとめたいのですが、メインのファイルと違う階層になるのでメインのファイルで #include hoge.h と書いても"インクルードファイル hoge.hが見つかりません"と出ます。 どうすればhoge.hをコンパイラが検索してくれるのでしょうか? Borland C++ Compiler,VC++でできる方法を教えてください(できれば両方がいいです) 環境はwindows ちなみにbcc developer という Borland C++ Compiler をGUIで操作できるツールを使ってます 宜しくお願いします

  • bcc32でSJIS以外のヘッダファイルが使えない

    こんにちは。 コマンドプロンプト上で、Borland C++ Compiler 5.5 のbcc32コマンドを使い、エンコーディングがShift_JIS以外、例えばUTF-8のヘッダファイルをインクルードしたソースファイルをコンパイルしようとすると、上手くいきません。 ヘッダファイルがShift_JISなら、それをインクルードしているソースがShift_JISでなくても、コンパイルできました。 bcc32をコンパイルコマンドとして扱う場合は、Shift_JISのヘッダファイルしか使えないのでしょうか? 以上の件について何かご存知の方がいらっしゃれば、是非教えて頂きたいと思います。 では、よろしくお願い致します。

  • ヘッダファイルに関数本体を書き込めないのか?

    こんにちは。 現在WindowsVistaでCおよびC++を使ってプログラミングを行っています。 最近になって思ったのですが、普通、ヘッダファイルに記述する内容は、 ・関数のプロトタイプ ・クラスのメンバ関数を除いた部分(いわゆる「クラスの骨格」) ・マクロ といったものだと言われています。 そして、関数の実態やクラスのメンバ関数などは、 別のソースファイルに記述するように言われています。 なぜ、ヘッダファイルに関数の実態や、クラスのメンバ関数を記述するべきではないでしょうか? あるいは、プログラムの内容に応じて、関数やクラスの内容を、 ヘッダファイルにまるごと記述してもよい場合と悪い場合があるのでしょうか? こういった事について、何か御存じの方がいらっしゃれば、是非アドバイスをお願い致します。 (難しい問題なので、なるべく詳しい説明を頂けると、大変助かります。) ちなみに、関数やクラスのメンバ関数も一緒に、クラスの内容をまるごとヘッダファイルに記述しても、 今までの所、全く問題なく動作しています。 例えば、以下のようなプログラムは、何の問題もなく動作します。 ●main.c ____________________________________________________________ #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> #include "func.h" void main(void) { char str[80]; puts("文字列を入力せよ"); gets(str); func(str); } ____________________________________________________________ ●func.h ____________________________________________________________ #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> void func(char *p) { puts("入力された内容は以下の通り。"); while(*p) putchar(*p++); } ____________________________________________________________

  • DOS画面でテキストカーソルの位置を移動する(C言語)

     DOS用のC言語プログラムを作っています。そこで printf関数などで文字列を表示した後表示した文字列の 間に違う文字列を挿入したりしたいのですがそんなことは 可能でしょうか? #include <stdio.h> int main(void){ printf("13456789"); printf("2"); return 0; } というプログラムを作ったとして1と3の間に割り込んで2と 入れたい場合どうしたらよいでしょうか? 開発環境はwindowsXPでコンパイワはBorlandです。

  • 頭冷やし終えました。スクリーンセーバー

    FXComposerで作成したエフェクトをスクリーンセーバーに組み込みたいのですが、わかりません。 通常のプログラムで使用する方法は分かっているのですが・・・。 開発環境・・・ Visual C++ .NET2003 BCC Developer Borland C++ Compiler5.5 nVIDIA FXComposer1.7 DirectX9.0c(Februaly2005)

  • 期待する文字列

    フリーウェアのBorland c++compiler 5.5で 動的メモリーを確保して、期待する文字列(実数文字)が入力されるまで 繰り返すというプログラムを作っています。 以下のプログラムだけだと正常に動作しますが、その関数をループさせて 期待する文字列までループさせると数字のみなら実効可能ですが、 数字以外の文字が混じって15文字以上になると「不正な処理~~~」と強制終了させられます。 以下が そのプログラムの考え方です。 1 関数 A() 動的メモリーの確保   2へ 2 関数 B() 文字の読み込み(必要に応じてメモリー拡張) 3へ 3 関数 C() '.'個数チェック 2=エラー表示            1=小数点の書き換え(数字) 4へ            0=             4へ 4 関数 D() 関数isdigitで各メモリーをチェック 無限ループを使って int i=1; while(i) { 関数 A() }iのアドレス(ポインタ)を4まで引数にして iの値を0に書き換えループから脱出させています c言語を勉強して2週間の初心者です。どこがいけないのか 分かりません。 どなたか教えてください。          

  • wstringについて

    以下のプログラムを実行すると「Abnormal program termination」となってしまいます。 何故なのでしょうか? どこか間違っているところがあるのでしょうか? #include <iostream> #include <string> int main(void) { std::wstring ws = L"文字列"; std::wcout.imbue(std::locale("japanese")); std::wcout << ws << std::endl; return 0; } 環境はWindowsXP/Borland C++ Compiler 5.5です。 よろしくお願いします。

  • DOS窓が閉じてしまう。

    こんばんは。Cpad for Borland C++Compilerを使っています。 入力後コンパイルされ(正常に) そしてDOS窓が開きますがそのまま 一瞬表示され(簡単な文字列を表示させるプログラムです)そしてそのまま窓が閉じてしまいます。 これを一時停止させて表示させる手法は何かないのでしょうか? OSはWINDOWSXPSP2 です。

このQ&Aのポイント
  • FH52/B2を使用しています。ピクチャーファイルに保存していた写真が「二つの山の後ろに月が出ている」青い色のアイコンのような図柄に変化していました。
  • 元に戻す方法を教えてください。
  • 富士通FMV
回答を見る

専門家に質問してみよう