
Cの初心者です。
ある文字列をスクロールさせるプログラムを作りました。
ソースは以下です。
***********************************************
#include<stdio.h>
#include<string.h>
void wait(long x)
{
int i;
for(i=0;i<x;i++){/* do nothing */}
}
int main(void)
{
char name[]="Hello OK Wave";
int i;
int len=strlen(name);
int time=0;
while(1){
printf("\r");
for(i=0;i<=len;i++){
if(time+i<=len){
printf("%c",name[time+i]);
}
else
{
printf("%c",name[time+i-len-1]);
}
}
time++;
if(time>len){time=0;}
wait(1000000000);
}
return(0);
}
*********************************************
(ちなみにコンパイル時最後のリターン文が実行されないという警告が出ます)
一応これで目的の動作はしてくれるのですが、
これですとwhile(1)の中を延々と続けているのでプログラムを終了させるために
いちいちコマンドプロンプトごと終了させなければいけません。
(ちなみにコマンドプロンプト自体のコマンドはよくわからないです)
これですとなんだか嫌な感じなので、あるキー、たとえば'Q'を押したら
プログラムが終了してくれるようなことが出来ないだろうかと思っています。
exit(1)を使うのかな?と思いましたがどのようにキーを押したかの判定などを
すればよいのか悩んでいます。
どうかよろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
初心者には難しい問題ですね。
。OSに依存する機能なので。。。。<基本的考え方>
1.2つの動作(終了入力を待つ事と別な処理)を、並列に実行する必要がある。
==>マルチプロセスやマルチスレッドの動作が
必要。その使用方法はOSで異なる。
2.fork/beginthreadnなどの関数で並列動作を行う。
3.片方の処理は入力を待ち、もう一方で実際の処理を
行う。
4.終了の入力があったら、別プロセス・スレッドを終了して、全体を終了する。
<その他>
プロセス、スレッドなどで検索してみて下さい。
参考URL:http://www.ncad.co.jp/~komata/c-kouza28.htm
確かにお話を聞いてると難しそうです笑。
マルチスレッドはJavaの本で目にしたことがありますが・・・。
勉強してみます。ありがとうございました。
No.2
- 回答日時:
コマンドプロンプト内では
CTRL+Cで実行中のコマンドを強制終了できますが
それでは駄目なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のプログラミングですが、
-
小数か整数かを判定する方法
-
scanf が無視されます
-
C言語の整数の判別
-
プログラミングの問題で、キー...
-
Userformの入力順序をタブオー...
-
4桁の数字以外を入力したらエラ...
-
Linuxで入力待ちなしkeyread関...
-
入力する数字のサイズ制限について
-
正負を反転させて出力するプロ...
-
Eclipseでコマンドラインを入力...
-
C言語でタイミングを合わせるゲ...
-
Javaについて質問です。 勉強し...
-
C++:cinが上手く使えない
-
ダメだ・・・分からない。while...
-
fgetsとループ処理
-
最早開始時間と最遅完了時刻を...
-
信頼区間の1.96や1.65ってどこ...
-
Aの値からBの値を除するとは??
-
strncpyと_tcsncpy_sのヌルの扱...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
*をユーザーが入力した数字の数...
-
java初心者です。入力されたの...
-
コマンドプロンプトからのEOFの...
-
4桁の数字以外を入力したらエラ...
-
Eclipseコンソール表示を、リセ...
-
Excel VBAで、Application.Inpu...
-
"scanf"でエンターで改行させな...
-
cout関数を使っているのですが...
-
プログラミングの問題です 「金...
-
scanf関数について
-
Userformの入力順序をタブオー...
-
C言語でgetchar();が上手く使え...
-
プログラムの実行時に'<'でリダ...
-
C言語初心者です。ファイルの読...
-
scanf が無視されます
-
実行結果の順番がおかしいんで...
-
C言語scanf_sで何故か2回入力に...
おすすめ情報