2011-04-21 6 views
2

はこのような何かを行うことです回転します。ここに私のコードは次のとおりです。は私がしようとしています何

#include <stdio.h> 

int main() 
{ 
    while(1) 
    { 
      printf("\\"); 
      printf("|"); 
      printf("/"); 
      printf("_"); 
    } 
    return 0; 
} 

私が直面する問題は、それは、順番にそれを印刷しますどのように私はそれがCまたはC++でのいくつかの時間遅延と同じカーソル位置に印刷させるかということですか?

+1

C++を書くときに '#include '、 '#include 'ではなく、 –

答えて

4

How to make cursor rotateの意味を正しく理解していませんか?あなたが遅延を必要とする場合は、ビジー待機、または呼び出しが眠ることをあなた自身の遅延機能の呼び出しを追加、あるいはんいくつかの

#include <stdio.h> 
#include <time.h> 

#define mydelay 100 

void delay(int m) 
{ 
    clock_t wait = m+ clock(); 
    while (wait > clock()); 
} 


int main() 
{ 
    while(1) 
    { 
      printf("\\\b"); 
      delay(mydelay); 
      printf("|\b"); 
      delay(mydelay); 
      printf("/\b"); 
      delay(mydelay); 
      printf("_\b"); 
      delay(mydelay); 
    } 

    return 0; 
} 
+0

+1。ニース。私はそれを考えていた。 – Nawaz

+0

はい、動作しているかどうかは環境に完全に依存しています。また、 'clock()'は通常、ウォールタイムではなくプロセスのCPU時間を測定します。 –

+0

@Nawaz ::ありがとうございます。 – Sadique

0

CまたはC++でこれを行う標準的な方法はありません。

ncursesやANSIエスケープシーケンス(Unix OSの場合)などのサードパーティライブラリを使用できます。

2
#include <stdio.h> 

int main() 
{ 
    while(1) 
    { 
      printf("\\"); printf("%c", 8); // 8 is the backspace ASCII code. 
      printf("|"); printf("%c", 8); // %c is the printf format string for single character 
      printf("/"); printf("%c", 8); // assuming output to a terminal that understands 
      printf("_"); printf("%c", 8); // Backspace processing, this works. 
    } 
    return 0; 
} 

:しかし、あなたはこのような何かをやりたいと思っ万が一ましたその他の処理。

1

あなたの冒頭に改行を追加することができます。

printf("\r|"); 
sleep(1); 

やバックスペースを追加Cでは、各印刷の前にいることは「\ B」またはASCII値8.を使用してバックスペース文字を印刷することができprinting.-

1

後。私はあなたが2つの印刷ステートメントの間にいくつかの遅延を必要とすると思います。

+0

Linuxの場合は、これを行うためのcursesライブラリがあります。 – BiGYaN

2
#include <stdio.h> 
#include <stdlib.h> /* for sleep() */ 

int main(void) 
{ 
    fprintf(stderr,"Here we are: "); 

    while(1) 
    { 
    fprintf(stderr,"\b\\"); 
    sleep(1); 
    fprintf(stderr,"\b|"); 
    sleep(1); 
    fprintf(stderr,"\b/"); 
    sleep(1); 
    fprintf(stderr,"\b-"); 
    sleep(1); 
    } 

    return 0; 
} 
2

これが機能するかどうかは完全にあなたのプログラムの出力が表示されている環境次第ですが、あなたは、印刷後にバックスペース文字(\b)を追加することができます。

あなたは実際に変更を見ることができるように遅延を導入することもできます(しかし、これは幅広いアルゴリズムの一部として自然に発生する可能性があります)。

#include <cstdio> 
#include <cstdlib> 

int main() 
{ 
    while(1) { 
      printf("\\\b"); sleep(1); 
      printf("|\b"); sleep(1); 
      printf("/\b"); sleep(1); 
      printf("_\b"); sleep(1); 
    } 
    return 0; 
} 

the curses libraryには、適切なテキストベースのGUI fuがあります。

関連する問題