
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も見ています
-
【初月無料キャンペーン実施中】オンライン健康相談gooドクター
24時間365日いつでも医師に健康相談できる!詳しくはコチラ>>
-
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
ループを途中で抜けたいのですが。
C言語・C++・C#
-
バッファとは何ですか
C言語・C++・C#
-
-
4
enterでループ終了
C言語・C++・C#
-
5
数字以外が入力されたらエラー文を出したい。
C言語・C++・C#
-
6
Linuxで入力待ちなしkeyread関数のようなものはありますか?
C言語・C++・C#
-
7
キーボードを押すまで処理を中断させる方法
C言語・C++・C#
-
8
C言語で今まで表示していた画面の消すには?
C言語・C++・C#
-
9
push any key で終了する方法?
C言語・C++・C#
-
10
waitせずにキー入力があった場合のみ処理をさせたい(C言語)
C言語・C++・C#
-
11
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
12
C言語 1文字入力(Enterキーなし)
C言語・C++・C#
-
13
数値の連続入力終了条件について
C言語・C++・C#
-
14
複数桁10進数の*桁目だけを抽出したい
C言語・C++・C#
-
15
特定のキーを押すまでループさせるにはどうすればよいですか。
Visual Basic(VBA)
-
16
ボタンが押された事を検知するには?
C言語・C++・C#
-
17
0除算して、落ちるプログラムと落ちないプログラム
C言語・C++・C#
-
18
getchar()について 教えてください。
C言語・C++・C#
-
19
scanf が無視されます
C言語・C++・C#
-
20
ループからの抜け出し方
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
"scanf"でエンターで改行させな...
-
5
switch文 defaultについて
-
6
入力候補を表示させるには・・・?
-
7
プログラミングの問題です 「金...
-
8
C言語scanf_sで何故か2回入力に...
-
9
C言語 for文をつかって記号を表...
-
10
VB.NETで16進数+16進数や16進...
-
11
Eclipseコンソール表示を、リセ...
-
12
【C言語】入力された文字種別ご...
-
13
scanf が無視されます
-
14
C言語でgetchar();が上手く使え...
-
15
プログラムC言語の整数の約数に...
-
16
WindowsでEOF
-
17
数値の連続入力終了条件について
-
18
scanf()の順番
-
19
C-Builderで数値(数字)以外を入...
-
20
scanf("%s", buf);でスペースを...
おすすめ情報
公式facebook
公式twitter