質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.38%

  • デバッグ

    126questions

    デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

errorが出てデバッグできません

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 715

sanchu52

score 157

In file included from kadai8-5.c:5:0:
getputch.h:22:21: fatal error: curses.h: No such file or directory
compilation terminated.

のようなエラーが出てデバッグできないのですが、
ファイルkadai8-5.cはchap08にあり、getputch.hとpdcurses.aとcurses.hも
chap08にあります。
$gcc -I. -o kadai8-5 kadai8-5.c pdcurses.aでコンパイルは成功します。実行もできるのですが、
$gcc -g -okadai8-5 kadai8-5.cを実行すると、最初に挙げたエラーが出てしまいます。
プログラムを理解するために、stepで実行を見たいのですが。
どなたか教えていただけますか。``


getputch.hのコードは以下のとおりです。

/* getch/putch用ヘッダ        "getputch.h" */

#if !defined(__GETPUTCH)

  #define __GETPUTCH

  #if defined(_MSC_VER) || (__TURBOC__) || (LSI_C)

    /* MS-Windows/MS-DOS(Visual C++, Borland C++, LSI-C 86 etc ...) */

    #include <conio.h>

    static void init_getputch(void) { /* 空 */ }

    static void term_getputch(void) { /* 空 */ }


  #else

    /* Cursesライブラリが提供されるUNIX/Linux/OS X */

    #include <curses.h>

    #undef putchar
    #undef puts
    #undef printf
    static char __buf[4096];

    /*--- __putchar:putchar関数と同等(改行を[改行+復帰]で出力)---*/
    static int __putchar(int ch)
    {
        if (ch == '\n')
            putchar('\r');
        return (putchar(ch));
    }

    /*--- putch:1文字表示してバッファを掃き出す ---*/
    static int putch(int ch)
    {
        int result = putchar(ch);

        fflush(stdout);
        return (result);
    }

    /*--- __printf:printf関数と同等(改行を[改行+復帰]で出力)---*/
    static int __printf(const char *format, ...)
    {
        va_list    ap;
        int     count;

        va_start(ap, format);
        vsprintf(__buf, format, ap);
        va_end(ap);

        for (count = 0; __buf[count]; count++) {
            putchar(__buf[count]);
            if (__buf[count] == '\n')
                putchar('\r');
        }
        return (count);
    }

    /*--- __puts:puts関数と同等(改行を[改行+復帰]で出力)---*/
    int __puts(const char *s)
    {
        int i, j;

        for (i = 0, j = 0; s[i]; i++) {
            __buf[j++] = s[i];
            if (s[i] == '\n')
                __buf[j++] = '\r';
        }
        return (puts(__buf));
    }

    /*--- ライブラリ初期処理 ---*/
    static void init_getputch(void)
    {
        initscr();
        cbreak();
        noecho();
        refresh();
    }

    /*--- ライブラリ終了処理 ---*/
    static void term_getputch(void)
    {
        endwin();
    }

    #define putchar    __putchar
    #define    printf    __printf
    #define puts    __puts

  #endif

#endif
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

sudo apt-get install libncurses5-dev
これでまずヘッダを取得してください

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/26 17:14

    MinGWにcurses関連のファイルをインストールして実行すると以下のエラーが出ます。
    C:\MinGW\users\chap08>gcc -g -o0 kadai8-5.c
    C:\Users\nakamura\AppData\Local\Temp\ccgaudrb.o: In function `init_getputch':
    C:\MinGW\users\chap08/getputch.h:80: undefined reference to `initscr'
    C:\MinGW\users\chap08/getputch.h:81: undefined reference to `cbreak'
    C:\MinGW\users\chap08/getputch.h:82: undefined reference to `noecho'
    C:\MinGW\users\chap08/getputch.h:83: undefined reference to `refresh'
    C:\Users\nakamura\AppData\Local\Temp\ccgaudrb.o: In function `term_getputch':
    C:\MinGW\users\chap08/getputch.h:89: undefined reference to `endwin'
    C:\Users\nakamura\AppData\Local\Temp\ccgaudrb.o: In function `main':
    C:\MinGW\users\chap08/kadai8-5.c:75: undefined reference to `stdscr'
    C:\MinGW\users\chap08/kadai8-5.c:75: undefined reference to `wgetch'
    C:\MinGW\users\chap08/kadai8-5.c:120: undefined reference to `stdscr'
    C:\MinGW\users\chap08/kadai8-5.c:120: undefined reference to `wgetch'
    collect2.exe: error: ld returned 1 exit status
    どうすればいいでしょうか。

    キャンセル

0

#include <curses.h>を、#include "curses.h"に変更したらどうなります?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.38%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • デバッグ

    126questions

    デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。