
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
Eclipseコンソール表示を、リセ...
-
エクセル¥マクロで対話形式の...
-
if文の条件にscanf関数を使うと…?
-
プログラミング初心者です。 Py...
-
C言語でgetchar();が上手く使え...
-
C言語でscanfが認識されません
-
文字のリアルタイム検索がした...
-
scanf()の順番
-
文字列で条件分岐 if swtich
-
java初心者です。入力されたの...
-
コマンドプロンプトからのEOFの...
-
Userformの入力順序をタブオー...
-
ワードで文字を入力する時の変...
-
VB カウントダウンタイマーの作...
-
漢字のソートについて
-
あるキーを押したら強制終了さ...
-
scanfでの可変引数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
*をユーザーが入力した数字の数...
-
java初心者です。入力されたの...
-
正負を反転させて出力するプロ...
-
Eclipseコンソール表示を、リセ...
-
scanfが2回使えない・・・?;
-
プログラミング初心者です。 Py...
-
C言語でgetchar();が上手く使え...
-
Excel VBAで、Application.Inpu...
-
電卓の小数点
-
cout関数を使っているのですが...
-
"scanf"でエンターで改行させな...
-
小数か整数かを判定する方法
-
至急教えてください!プログラ...
-
getchar()について 教えてくだ...
-
scanf が無視されます
-
batプログラム上で文字列を入力...
-
コマンドプロンプトからのEOFの...
-
IF文で戻ることはできますか?...
-
プログラミングの問題です 「金...
おすすめ情報