###前提・実現したいこと
c言語です。無限ループの中で文字を出力し続けるプログラム(■が右から左に流れ続けるというもの)を作ったのですが、その無限ループを任意のタイミング(エンターを押すなどをトリガーに)で抜けさせることは可能ですか?無限ループを抜ける瞬間までは文字の出力を繰り返したいです。
###該当のソースコード
c
1 2#include <time.h> 3#include <stdio.h> 4#include <string.h> 5 6int sleep(unsigned long x); 7 8int main(void) 9{ 10 int i, start_point = 0; 11 char block[] = "■■■■■■ "; 12 int block_len = strlen(block); 13 14 while (1){ 15 putchar('\r'); 16 for (i = 0; i < block_len; i += 2) { 17 if (start_point + i < block_len) { 18 putchar(block[start_point + i]); 19 putchar(block[start_point + i + 1]); 20 } 21 else { 22 putchar(block[start_point + i - block_len]); 23 putchar(block[start_point + i - block_len + 1]); 24 } 25 } 26 27 fflush(stdout); 28 sleep(200); 29 30 if (start_point < block_len - 2) { 31 start_point += 2; 32 } 33 else { 34 start_point = 0; 35 } 36 } 37 38 return 0; 39} 40 41//xミリ秒経過するのを待つ 42int sleep(unsigned long x) 43{ 44 clock_t c1= clock(), c2; 45 do { 46 if ((c2 = clock()) == (clock_t)-1) 47 return 1; 48 } while (1000.0 * (c2 - c1) / CLOCKS_PER_SEC < x); 49 return 0; 50}
###試したこと
scanfを使ってループを抜けることを考えましたが、入力待ちになるので無限ループを抜ける瞬間まで文字の出力を続けることが出来ませんでした。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/23 16:07