ページ 11

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

Posted: 2010年10月08日(金) 17:22
by おこちゃま
はじめまして。
初めて利用させていただきます。

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

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

Re:無題

Posted: 2010年10月08日(金) 17:30
by おこちゃま
ごめんなさい・・・
編集キーをかけるのを忘れてました・・・
「無題」が直せません・・・

Re:無題

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

Re:無題

Posted: 2010年10月08日(金) 17:45
by おこちゃま
ipod touchでGCCが動くと聞き、組んでみたのが今回の動機でした。
ですから私のプログラムは、MobileTerminal上で動くもので、
Xcodeのようなちゃんとした開発キットは、私は持っていません。

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

Re:無題

Posted: 2010年10月08日(金) 18:27
by ISLe
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:無題

Posted: 2010年10月08日(金) 18:35
by おこちゃま
上のコードを参考にさせていただきます。
改行がおかしくなるのはMobileTerminalの仕様だとあきらめて解決策を模索します。
ありがとうございました。

Re:無題

Posted: 2010年10月08日(金) 18:50
by ISLe
> 改行がおかしくなるのはMobileTerminalの仕様だとあきらめて解決策を模索します。

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

Re:無題

Posted: 2010年10月08日(金) 21:03
by おこちゃま
え。
そうなんですか!
あちゃあ・・・
それかもしれません・・・
試してみます。
ありがとうございます。

Re:無題

Posted: 2010年10月09日(土) 02:05
by ISLe
あっと、そう言えばOS XからはUNIX系でしたっけ。
すみません。間違えました。