- ベストアンサー
waitせずにキー入力があった場合のみ処理をさせたい(C言語)
getch()だと、そこでいったん待機状態になりますが、何もキー入力が無かった場合通常通り処理が続行され、もしキー入力があった場合のみ、何か処理をさせたいって時はどうすればいいでしょうか? ちなみにヘッダーファイルが見つからなくて、kbhit()が使えませんでした。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- C言語 kEYの空読み
C言語でプログラムを組んでいます。 あるひとつの処理を連続で行い、何かKEYボタンをおすとプログラムが終了するというプログラム なのですが? while(kbhit()) getch(); while(1) { ~~~~~~ if(kbhit()) { getch(); return(1); } }while(c==0); という内容ですが、 if(kbhit())のあとの文面は、KEYが押されると(1)が返されエラーになり処理が中断される ということはわかりますが、 冒頭でのこの部分while(kbhit()) getch(); は、どういった意図の分なのでしょうか?
- 締切済み
- その他(学問・教育)
- キーの入力がおかしい
キーの入力がおかしくなりました。 どういうわけか、一番上の段のキー(Ex:「あ」や「う」)だけがきちんと入力することができません(←「あ」や「う」はコピペで入力してます) ローマ字入力で設定しているので、通常それらのキーを押せば平仮名が出てくるはずなのですが、全角英数で入力したように数字が出てきてしまいます。 どこか設定をいじってしまったのでしょうか? どうしたら症状が改善されるか、どなたか教えてください。 ちなみに「あいうえお」を普通に打ちますと、「3いうえお」になるような具合です。
- 締切済み
- Windows XP
- キー入力が変に・・・。ファンションを押しながらじゃないと正しく入力できません。。
教えてください。。 ノートPCに、 USB接続で外付けのキーボード(他メーカ)を一度接続して使用した後、 そのキーボードを取り外し、 再びノートPCのキーボードを通常通り使用しようとしたところ、 一部のキーでファンクションを押しながら入力しないと、 通常のキー入力ができない状態になってしまいました。 (例えば、uiojklが、456123になってしまう。) 元のキー入力に戻したいのですが、どうしたらいいんでしょうか?。。 教えてください。。 ちょっとPCがあまり得意ではなく、 なるべく具体的な操作方法まで教えていただけるととてもうれしいです。 すみません。。 ※ちなみに使用しているPCは、「パナソニック レッツノート CF-R3」です。
- ベストアンサー
- Windows XP
- C言語 空白の行(改行のみ)が入力されたらプログラムを終了する処理
コンソールでうごくCUIプログラムを作っています。 そのとき文字列を入力してEnterキーを押すと、その文字列を格納したり何らかの処理をします。問題は何も入力せずにEnterキーを押された場合、プログラムを終了するという処理です。 どのようなソースになるのでしょうか?
- ベストアンサー
- C・C++・C#
- 1キー入力で2キー分入力できるソフトってありませんか?
1キー入力で2キー分入力できるソフト探しています。 F1キーを押した場合、F1と他のキー(F2など)を押した状態の ソフトがありましたら教えてください。
- 締切済み
- その他(ソフトウェア)
- C言語のファイル処理について
環境 OS:Windows VISTA Ultimate コンパイラ:Borland C++ Compiler 5.5 Cの基礎的な勉強をしています。2つほど質問があります。 1つ目は、ファイル処理の勉強としてプログラムを作っているのですがファイルが上手く開けません。プログラムとしてはファイルを開いて、ファイル内に記述されている数値を取り出し、計算を行う簡単なものを作っています。ソースは以下のものになります。 #define N 256 int file_read(char filename[] , int count[]) { int m; FILE *fp; fp=fopen(filename,"r"); if(fp==NULL) { /* オープン失敗 */ printf("Not Found File\n"); return -1; /* 戻り値-1 */ } while((m = fgetc(fp)) != EOF) { 読み取った数値配列に格納する処理 } fclose(fp); return 0; } int operation(int count[]) { 計算処理 return 0; } int main(void) { int *count[N]; char *filename[256]; memset(count, 0, sizeof(count)); /* 変数・配列初期化 */ printf("Please Input Filename:"); fgets(filename, sizeof(filename), stdin ); if(file_read(filename,count) != -1) operation(count); return 0; } バッファオーバーランの事を考え、fgetsによるキー入力にしたのですがファイルオープン失敗になってしまいます。fgetsのあと、変数filenameの中身を確認したところ、キー入力した文字はきちんと代入されていました。オープンするファイルはきちんとあるのですが・・。 fgetsをscanfに変えた場合は上手くいくので書式指定をしてscanfを使えばいいのでしょうが、なぜfgetsで上手くいかないでしょうか? 2つ目はgetchar()とfgets()に関してです。 while((c = getchar()) != EOF) { . .処理 . fgets(変数, sizeof(変数), stdin ); . .処理 . } とした場合、fgetsの処理が無視されてしまいます。 これはどういったことが原因なのでしょうか。 ご教授、お願いいたします。
- ベストアンサー
- C・C++・C#
- c言語
#include<stdio.h> #include<conio.h> void main() { int i=1,sum=0; char c=\'m\'; while(c!=\'e\')//eでない限りwhileループを実行する { sum=sum+i; printf(\"\\n1 kara %d madewo tasuto %d desu.\\n\",i,sum); i++; printf(\"nanikakeywo oshitekudasai.owaru tokiha \'e\'\\n\"); c=getch(); } printf(\"loopwo nukemashita\\n\"); getch(); } while(c!=\'e\')をwhile(c>0)にして実行したい場合はcharをintにかえて、scanfを使わなければならないのはわかりますが、どこを変えればよいか分かりません。ちなみに、while(c>0)に変えた場合に、正の数を入力した後に、「次の数を入力してください」という文を表示してからくりかえす方法をおしえてください。
- 締切済み
- C・C++・C#
- C# DateTimePicker をキー入力でDropDownしたい
はじめまして。 Vs2005で開発しています。 DateTimePickerでキー入力でDropDownしたいのですが、 うまくいきません。 現在の処理は、DateTimePickerの派生クラスを作成して、 KeyUpイベント内で、Spaceキーがクリックされた場合に、 OnDropDownを呼び出しています。 ソースコードは明日にでも、掲載します。 よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- 特定のキーのみ入力できなくなった
何かのキーを押してしまったのか会社のPCのキー入力で、 WINDOWSキーが押されっぱなしみたいな状態になっていました。 「d」を押すとwindouws+dみたいに最小化したり、「r」を押すとwindouws+rみたいにファイル実行が立ち上がったりしました。 パソコンを再起動しても直りませんでしたので、ALTやSHIFTやWINDOWSキーを連打してたりしたら、いつのまにか治っていました。 原因が不明なので、どのような設定をしてしまったのでしょうか。 またその後、エクセルの入力だけ「t h c v」のキーを押しても何も入力できませんでした。 SHIFTキーを押しながら「t h c v」を押すとなんとか大文字ですが入力できました。 こちらはまだ治っていません。 このような状態は初めてですので、修正方法を教えていただけますでしょうか。
- ベストアンサー
- その他([技術者向] コンピューター)
補足
使えそうです、いろいろいじってみたいと思います。ありがとうございました。