- ベストアンサー
MacOSX で getche() と同じ能力をもった関数
初めましてC言語をMacOSXで勉強しております。独習Cというテキストを参考にしておりますが、conio.h ヘッダの getche() 関数を多用しております。OSXではこの関数を使う事ができませんが、それと同等な関数は用意されているのでしょうか。基本的な事で恐縮ですが、どうぞよろしくお願いいたします。 また、OSXでC言語を学習する上で他のコンパイラなどとの相違、注意が必要な部分などございましたらどうぞご教授ください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
conio.hは、Winodws系でのみ提供されているライブラリ関数ですので、Mac OS X(gcc)では提供されてません。 stdioかncursesとかで同じ関数を自作するか、書き換える必要があります。 Mac OS Xの特異なところは、 ・Mach ・Objective-C ・Cocoa/Carbon ――などありますが、C言語処理系としてgccを採用してますから、Cの初級レベルでは、とくに他と変わるところはありません。
その他の回答 (1)
- jacta
- ベストアンサー率26% (845/3158)
本来ならncursesでというところなのですが、ncursesを使ってgetcheをエミュレートできるぐらいなら、入門書なんか読んでいませんよね。 有効な解決策はちょっと見つかりません。むしろ、このような非標準ライブラリに依存したコードを書くと、今回のような問題が発生するということを学習してください。(今回は質問者さんが悪いのではなく、「独習C」が悪いのです) > また、OSXでC言語を学習する上で他のコンパイラなどとの相違、注意が必要な部分などございましたらどうぞご教授ください。 学習段階では、なるべく標準ライブラリのみを使いましょう。その後、OSXに特化したプログラムを書きたいときになって初めて、専用のライブラリを学習するとよいでしょう。最初から特定環境に依存してしまうと、つぶしがきかなくなります。
お礼
有り難うございました。getchar()のみを使い、教則本の意図からは離れていますがgetche()で表れてきた課題を色々と組んでみました。おかげでgetchar()の使い方に理解が深まったと思っています。マイナスに考えずにある物で(標準ライブラリ)最大限にやろうと思います。
お礼
有り難うございました。実際にやってみまして、gconio.hがインクルードできることを確かめました。少しずつですが前進しつつありまして、嬉しく思っています。有り難うございました。
補足
有り難うございます。参考URLを拝見いたしました。ヘッダファイルを追加する作業は初めてなのですが、usr/include/以下にダウンロードした gconio.h を配置すれば include する事ができるようになる、ということですね。このように非標準のヘッダをどんどん追加してゆく事でこれから先何かトラブルなど生じるのでしょうか(例えば何かヘッダ同士で不具合が生じる?等、初心者ですので質問も的外れかもしれませんが)。