C言語の勉強を「C machine」というソフトを使ってしているのですが,

     #include<   >
            ↑
    ここに入れるファイル?で、string.h conio.hという
のがないみたいでgetch()などが使えません。

そこで、この「string.h」「conio.h」などを導入したいのですがやり方がわからないので誰か教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

「C machine」、知りません...


_getch()は、ANSIの関数ではないようです。
「Cの学習」という観点から考えるなら、
別の関数を利用するほうがベターでしょう。
getchar()ではダメなんでしょうか?
(getchar()ならstdio.hでOK)
    • good
    • 0

[C machine]は、フリーソフトのC言語学習ツールですよね?


展開したファイルにIncludeディレクトリに、ヘッダが有りますが、そこに入っている以外のコマンドは、使えないと思います。

また、getch()は昔のMS-Cにあったコマンドですよね?たしか、キー入力で待ちが発生せずに抜けるコマンドだったと記憶していますが、ANSI-Cには同様のコマンドがないので、通常は使えないですよ。
    • good
    • 0

string.h conio.hが無いというのは、どの様に調べましたか?


ファイルが存在しない。。というのはちょっと考えづらいですね。
「C machine」というコンパイラ(?)の設定がまだ足りなかったりしませんか?
DOSベースでのコンパイラなどでは 環境変数をSETコマンドで登録します。
ライブラリファイルや、インクルードファイルの場所を示すのが一般的かな?
再度、ファイルを検索して、環境変数の設定を見直す事をお勧めします
    • good
    • 0

まずは、C言語の本を読んだ方がよいのではないでしょうか?


「プログラミング言語C第2版」(共立出版)は必須です。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q?

C Machineをダウンロードして、プログラムを作ったのですが、エラーで「インクルードファイル<conio.h>はオープンできません」と表示されました。なぜオープンできないんでしょうか?わかる方、教えてください。

Aベストアンサー

ほかのコンパイラから、conio.hをもってこればできるかと思いましたが、
LCCの試食版からもってきたらダメでした。
ほかのコンパイラのヘッダファイルだといいかもしれませんが。
ただ、ヘッダファイルにせよ、著作権は存在すると思われるので、そこは気をつけてください。
CMachineではEXEファイルを作ることはできないので、
ほかのフリーコンパイラを探してみてはどうです?

Qlinux上でgetchを使いたい

linux上でgetch()を使おうと思い、<conio.h>をインクルードしたのですが、未定義のエラーが出てしまいます。どうやら、linuxでは、<conio.h>が無い?みたいなのですが、どうやったら、getch()を使用できるようになるのでしょうか??

Aベストアンサー

基本的には #1 さんの参考 URL の方法でいいですが,
mygetch() を呼ぶたびに tcgetattr(),tcsetattr() するのでちょっと無駄が多い.
(性能低下を招くほどではありませんが.)

アプリケーションの起動から終了まで,あるいは一定期間 raw モードだけを
使うのなら,次のサンプルのように一度端末モード設定をしてあとは普通に
getchar() を使う方が効率は (少しですが) いいです.

/*--------------------------------------------------------------------------
サンプル
・1文字入力するたびに標準出力に出力する.
・制御文字は16進で出力.
・CTRL-D を押すと終了.
--------------------------------------------------------------------------*/
#include <stdio.h>
#include <unistd.h>
#include <termios.h>

#define QUIT_CHAR 0x04 /* CTRL-D を押すと終了する.*/

// 端末設定保存用大域変数
struct termios CookedTermIos; // cooked モード用
struct termios RawTermIos; // raw モード用


int main(void)
{
  int c;

  // 初期状態の端末設定 (cooked モード) を取得・保存する.
  tcgetattr(STDIN_FILENO, &CookedTermIos);

  // raw モードの端末設定を作成・保存する.
  RawTermIos = CookedTermIos;
  cfmakeraw(&RawTermIos);

  // 端末を raw モードに設定する.
  tcsetattr(STDIN_FILENO, 0, &RawTermIos);

  // 1文字入力されるごとに標準出力にエコーする.
  while((c = getchar()) != QUIT_CHAR) {
    if(isprint(c)) {
      // 印字可能文字の場合:そのまま表示.
      putchar(c);
    } else {
      // 制御文字の場合:16進で出力.
      printf("<%02X>", c);
      if(c == '\n') fputs("\r\n", stdout);
    }
  }

  // 端末設定を元に戻す.
  tcsetattr(STDIN_FILENO, 0, &CookedTermIos);
  putchar('\n');
  return 0;
}

基本的には #1 さんの参考 URL の方法でいいですが,
mygetch() を呼ぶたびに tcgetattr(),tcsetattr() するのでちょっと無駄が多い.
(性能低下を招くほどではありませんが.)

アプリケーションの起動から終了まで,あるいは一定期間 raw モードだけを
使うのなら,次のサンプルのように一度端末モード設定をしてあとは普通に
getchar() を使う方が効率は (少しですが) いいです.

/*--------------------------------------------------------------------------
サンプル
・1文字入力するたびに...続きを読む

QDOSの文字の色を変える方法。

C言語でDOSプログラムを作っているのですが、
文字の色を変えることはできるのでしょうか?

#include <stdio.h>
void main(){
printf("あいうえお");
}

コンパイラはボーランドで、DOSはXPのものとし、
文字を赤くするとしたら上の例ならどのように
書けばよいのでしょう?

Aベストアンサー

文字をカラーで表示するには
ヘッダファイルconio.hで定義されているtextattr()を使います。
なのでconio.hをインクルードする必要があります。

色は0~15の整数値や記号で指定します。
0=BLACK
1=BLUE
2=GREEN
など。
以上をふまえると以下のようなソースになります
(緑色で表示します)
文字をカラーで表示する方法はコンパイラによって違うと聞くので試してみてください。
文字をカラーで表示するには
ヘッダファイルconio.hで定義されているtextattr()を使います。
なのでconio.hをインクルードする必要があります。

色は0~15の整数値や記号で指定します。
0=BLACK
1=BLUE
2=GREEN
3=CYAN
4=RED
5=MAGENTA
6=BROWN
7=LIGHTGRAY
など。
以上をふまえると以下のようなソースになります
(緑色で表示します)
文字をカラーで表示する方法はコンパイラによって違うと聞くので試してみてください…
#include<stdio.h>
#include<conio.h>

int main(){
textattr(2);
textattr(GREEN);
cprintf("あいうえお");
return 0;
}

文字をカラーで表示するには
ヘッダファイルconio.hで定義されているtextattr()を使います。
なのでconio.hをインクルードする必要があります。

色は0~15の整数値や記号で指定します。
0=BLACK
1=BLUE
2=GREEN
など。
以上をふまえると以下のようなソースになります
(緑色で表示します)
文字をカラーで表示する方法はコンパイラによって違うと聞くので試してみてください。
文字をカラーで表示するには
ヘッダファイルconio.hで定義されているtextattr()を使います。
なのでconio.hをインクルー...続きを読む

Qfgetsなどのときのstdinのバッファを消すには?

こんにちは,今C(C++でない)を使用しています。
たとえば,
char str[20]
fgets(str,sizeof(str),stdin)
としたときに20字以上を打つと,stdinのバッファに20字以上の分が残ったままになります。

C++などでは
fflush(stdin)で,うまくいきますが,普通のCでは対応がされていないみたいでうまくいきません。

よろしくお願いします。

Aベストアンサー

あ,テキスト入力だからこんな大掛かりなことしなくてもいいんだ.
末尾に'\n'が出るまで掃出せばいいんですよね.

fgets(str, sizeof(str), stdin);
if ( str[strlen(str)-1] != '\n' ){
while( getchar() != '\n' );
}

でいいんだ.失礼しました.

Qconio.h? curses.h?

cygwinを使ってCを勉強しています。
キー入力を画面にエコーせずに読み込んだりするために「conio.h」か「curses.h」ないとだめなようで、windows向けとunix向けサンプルプログラムを2種類をコンパイルしてみたのですが、どちらの場合も「conio.h」「curses.h」:No such file or directoryといわれてしまいます。

これはどうしてでしょうか?そもそもどちらのファイルも存在していないということでしょうか?

Aベストアンサー

/usr/include/mingw/conio.h /usr/include/curses.h です。conio.h の方はともかく、curses.h の方は標準のディレクトリにあるので、No such file or directory にならないと思うのですが…。セットアップの時に curses を選択しましたか?

Q配列の要素数に変数を入れたいときには

よろしくお願いします。
配列の要素数には定数しか入れられないのですが,どうしても変数を入れたいときは,それを引数として関数を呼び出すしか方法はないでしょうか。
具体的には,scanfで手に入れたint型の変数を要素数とする配列を宣言したいのですが,どうすれば良いでしょうか。
ご教授ください。

Aベストアンサー

c99と呼ばれる最近の規格では、配列の大きさに変数を使用できます。
bccはc99に対応していないようです。

それ以前の規格では、動的領域確保関数 malloc や callocを使って領域を確保するか、効率等を無視してバカデカい配列を用意しておくかです。
「それを引数として関数を呼び出す」っていうのは、malloc/callocのことですか?

QC言語 配列の長さの上限

C言語で配列Array[N]の長さNの上限っていくらなんでしょうか?
もし可能なのであれば上限を2147483647にしたいのですが、方法を教えてください。

Aベストアンサー

そもそもWindowsの32bit版はアプリが仮想メモリ空間を2GBしか使えません。2GBを超えるには64bit版が必要です。
たとえ64bit版OSだとしても添え字が2147483647って、単純なintの配列だとしても4x2147483647=8GB必要ですね。実メモリ16GBとかのPCを用意しますか?
そもそも配列で2147483647個必要なアルゴリズムに問題ありだと思います。


人気Q&Aランキング

おすすめ情報