- ベストアンサー
getch
c言語初心者です。 私はvisualc++ でキー入力待ちでgetch()をつかっていたのですが unix上ではエラーしてしまいます。 一応サイトなどで検索しているのですがなかなかみつかりません。 どなたか代わりになる、unix上でも使える関数を教えていただけませんか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- cyacya2000
- ベストアンサー率54% (39/71)
- Yanch
- ベストアンサー率50% (114/225)
- hidebun
- ベストアンサー率50% (92/181)
関連するQ&A
- UWSCのgetch的な物
UWSCにはC言語のgetchのようなコマンドはありますか? キーボードの何かのボタンを押したら即入力になるようなものです たとえばキーボードの 1 を押したとたん指定の動作をさせたりとかをしたいのです、getch的なものではなくても他に代用できそうなコマンドご存知ないでしょうか ご存知の方いらっしゃいましたらよろしくおねがいします!
- ベストアンサー
- その他(プログラミング・開発)
- C言語でタイミングを合わせるゲームを作っているのですが・・・。【getch()】
C言語で壁に向かって衝突していくボールをタイミングよくスペースキーを押すことで打ち返すプログラムを作っています(多分実行しないと分かりにくいかも)。 そこでキーの入力にgetch()関数を使っていますが、これだと何かキーが入力されるまで永遠と待ち続けてしまうので、タイミングが100%合ってしまいます。 そこで指定された秒数だけキーの入力を受け付けるような方法を探しているのですが、そのようなものはあるのでしょうか? #include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h> #include <windows.h> int main(void){ int key=0,ballichi=0,i,i2; system("cls");//画面の初期化 for(i=0;i<10;i++){ for(i2=0;i2<10;i2++){ if(ballichi==i2){printf(" o"); }else{printf(" ");} } printf("|壁"); if(i==9){ key = getch(); //キーから一文字入力 switch (key) { /* キー入力チェック */ case ' ': printf("スペースキーが押されました"); break; } } Sleep(500); ballichi++; system("cls"); } return 0; }
- 締切済み
- C・C++・C#
- C言語 kEYの空読み
C言語でプログラムを組んでいます。 あるひとつの処理を連続で行い、何かKEYボタンをおすとプログラムが終了するというプログラム なのですが? while(kbhit()) getch(); while(1) { ~~~~~~ if(kbhit()) { getch(); return(1); } }while(c==0); という内容ですが、 if(kbhit())のあとの文面は、KEYが押されると(1)が返されエラーになり処理が中断される ということはわかりますが、 冒頭でのこの部分while(kbhit()) getch(); は、どういった意図の分なのでしょうか?
- 締切済み
- その他(学問・教育)
- C言語の非標準コンソール関数getch()について
こんにちは。 あるプログラムを作っていると、次のような問題が起きてしまいました。 簡単なプログラムを例にして、説明したいと思います。 #include<stdio.h> #include<conio.h> #include<ctype.h> void main(void) { char ch; int i; do{ ch=getch(); putchar(toupper(ch)); }while(ch!='q'); printf("\n"); scanf("%d",&i); } これはgetch()関数を使い入力された文字を大文字にして画面上に出力するものです。(qが入力されるまで) その後に、意味はありませんが変数iに整数を入力して終了する。 ここで、問題になってくるのがこのプログラムを実行して、abcdefqと入力していくと、画面上にはABCDEFQと表示されます。そして、qが入力されたことでdo文が終了して改行が行われます。次にscanfによりいったん入力待ちになります。 この時、まだ、なにも入力していないにも関わらず、最後にgetchにより入力したqが表示されてしまいます。 qを消してscanfの入力をすればいいのですが、この問題を何とか解決したと思い質問しました。 scanfの後にgetchar()を使うときはscanf入力時の'\n'に注意が必要だということはわかるのですが、上に述べたような問題はこれに似ているのでしょうか? 参考書をみたり自分でもいろいろ試してみたのですがどうもうまくいきません。 どなたか、解決策を知っていたら是非教えて下さい。 できれば、getch()とscanfがどのように作用してこのようなことが起きてしまっているのか説明して頂けたら幸いです。 お手数ですが、みなさま、よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- linuxからC言語のコンパイラー使えますか?
仕事でunixからC言語のコンパイラーをつかっています。 WindowsXPからC言語となるとすぐVISUALC++を想像してしまい 単純なunixでつかっているようなものが見当たりません。 linuxはつかったことないのですが、unixと似ているとききました。 unixと同じく標準でcコンパイラーは付属しているのでしょうか? ちなみにC言語を使いテキストファイルを編集(並び替えやあるワードの抜き出しやあるワードの置換)するプログラムを組み実行しています。
- ベストアンサー
- Linux系OS
- ライブラリ作成時のグローバル変数の対応(C言語)
C言語を用いてライブラリを作成しています。 ライブラリは機能ごとにファイルを分けています。 今、ライブラリの中でのみ使用するグローバル変数やグローバル関数が必要になりました。 このグローバル変数や関数は複数ファイルで参照するため、static宣言はできません。 しかし、このグローバル変数や関数は公開する必要はありません(ライブラリの中でのみ使用します)。 このようなことをC言語で実現するためにはどうしたらよいのでしょうか? 開発環境は Windows7 VisualC++2010 です。 VisualC++2010を使うなら C++で書けばいいのではないかといわれそうですが、 C言語でプログラミングしたいのです。 以下のようなサイトがあったのですが、これを使うしかないでしょうか? http://0xcc.net/blog/archives/000108.html
- ベストアンサー
- C・C++・C#
- VisualC++ でstdinにファイルを指定する方法
VisualC++のコンソールアプリを作成する機能で、C++の勉強をしています。 ところで、VisualC++で、標準入力にファイルを指定する方法はどうすればいいのでしょうか? Unixでいうところの ./a.out <sample.txt とやりたいのです。 よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- 整数型の配列に a,b,c,: などの文字を入れたら・・・
整数型の配列に整数データを格納するプログラムで、 入力時に文字を入力してしまった場合、 エラーチェックを行いたいのですが、 具体的にどのような方法があるのでしょうか? 文字を入力した場合に、 とてつもないことがDos画面でおこってしまいます。 どうか皆さん、よろしくお願いします。 言語はC言語で、 visualC++6.0を使っています。
- 締切済み
- C・C++・C#
- コンソールアプリでキーの同時押しを検出する方法
コンソールアプリでキーの同時押しを検出する方法がわかりません。 GUIならおとなしくDirectInputに逃げることが出来たかもしれませんが、 コンソールなのでそれも出来ずに悩んでいます。 環境はVisualC++2005(ExpressEdition)、WindowsXPです。 _getch()や_kbhit()だけではどうにも無理そうですし、残された手段は _inp()程度でしょうか。昔はPC-9801でBASICからINP()関数でI/Oポートを 直接叩いてキー入力を読み出していたものでしたが、AT互換機となると 若干勝手が違ってくるように思えます。ましてや9xではないWindowsXPで I/Oポートなんかすんなり読ませてくれるのか若干不安が残っています。 どなたかその辺の処理で詳しい方いらっしゃいませんでしょうか?
- ベストアンサー
- C・C++・C#
- \x1bが働きません。
\x1bが働きません。 すみません。C言語初心者でよくわかりません。 コンパイラはフリーのBorland C++ Compiler 5.5を使用してます。 OSはWindows98です。 記述は下記のとおりですが、 ------------------------------------------------------ #include <stdio.h> #include <conio.h> void main(void); void main(void) { int i; printf("clear\x1b[2J\n"); for(i=30;i<=37;i++){ printf("\x1b[%dmcolor\n",i); } getch(); } ------------------------------------------------------ DOS窓の実行画面はこのとおり。全部白文字で出力されます。 ------------------------------------------------------ clear←[2J ←[30mcolor ←[31mcolor ←[32mcolor ←[33mcolor ←[34mcolor ←[35mcolor ←[36mcolor ←[37mcolor (getchの入力待ち) ------------------------------------------------------ 実際は←の所はEnterキーに印刷されているカギ状の矢印です。 \x1bが改行マーク?に置きかえられているのです。 どなたかアドバイスお願いします。 ちなみにDOS窓の時に\が「む」キーを押さないと入力できませんが 何か関係がありますか?
- ベストアンサー
- C・C++・C#
- Bs動画レコーダー9を使用している際に、録画ができない問題が発生しています。
- さらに、操作方法も分からず困っています。
- お困りの方には、解決策や操作方法の案内を提供します。
補足
まだライブラリの相性などが理解できるほどの知識もありあせん。 大変参考になりました。ありがとうございます。