conio.hをUNIXで使う方法について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
おこちゃま

conio.hをUNIXで使う方法について

#1

投稿記事 by おこちゃま » 15年前

はじめまして。
初めて利用させていただきます。

実は、C言語でconio.hのkbhit()などを使うコンソールアプリケーションを作成しました。
それを、ipod touchに移植(?)したいのですが、conio.hがUNIXにはないようです。
そこで、kbhit()を自作するか、ライブラリを追加するかしようとしたのですが、
いくら試してもうまくいきません。
MinGWのライブラリから、conio.hを追加、というのはそもそもうまくいくのでしょうか。

(管理人がタイトルを編集しました)

おこちゃま

Re:無題

#2

投稿記事 by おこちゃま » 15年前

ごめんなさい・・・
編集キーをかけるのを忘れてました・・・
「無題」が直せません・・・

toyo

Re:無題

#3

投稿記事 by toyo » 15年前

パソコンなどの環境では標準入出力を使えば移殖性のあるプログラムが作れますが組み込み系では入力、出力というのはその機器独自のものを使う必要があります
普通は開発キットにライブラリとしてあると思うのですが

おこちゃま

Re:無題

#4

投稿記事 by おこちゃま » 15年前

ipod touchでGCCが動くと聞き、組んでみたのが今回の動機でした。
ですから私のプログラムは、MobileTerminal上で動くもので、
Xcodeのようなちゃんとした開発キットは、私は持っていません。

ipod touchに入れたGCCのライブラリは、
見た感じではcurses.hなどはあり、UNIXのようなライブラリでした。

ISLe

Re:無題

#5

投稿記事 by ISLe » 15年前

conio.hはMS-DOSの機能を呼び出すライブラリなのでUNIXにそのものずばりのものはありません。

> 見た感じではcurses.hなどはあり、UNIXのようなライブラリでした。

cursesが使えるなら
#include <stdio.h>
#include <curses.h>

int
main()
{
    int c;

    initscr();
    noecho();
    cbreak();
    nodelay( stdscr, TRUE );

    while (1)
    {
        sleep( 1 );

        c = getch();

        if ( c != ERR )
        {
            addch( c );
        }
        else
        {
            addch( '.' );
        }
    }

    endwin();
}
という感じでgetchにkbhitふうの動作をさせることができるそうです。
# Ubuntu10.04とCygwinで動作確認済みです。

おこちゃま

Re:無題

#6

投稿記事 by おこちゃま » 15年前

上のコードを参考にさせていただきます。
改行がおかしくなるのはMobileTerminalの仕様だとあきらめて解決策を模索します。
ありがとうございました。

ISLe

Re:無題

#7

投稿記事 by ISLe » 15年前

> 改行がおかしくなるのはMobileTerminalの仕様だとあきらめて解決策を模索します。

Mac系の改行コードはWindows系やUNIX系と違いますけどそのあたりは大丈夫ですか?

おこちゃま

Re:無題

#8

投稿記事 by おこちゃま » 15年前

え。
そうなんですか!
あちゃあ・・・
それかもしれません・・・
試してみます。
ありがとうございます。

ISLe

Re:無題

#9

投稿記事 by ISLe » 15年前

あっと、そう言えばOS XからはUNIX系でしたっけ。
すみません。間違えました。

閉鎖

“C言語何でも質問掲示板” へ戻る