user-0 提问: 求助 c语言入门经典 的代码在ubunut下可以编译却无法正确运行！

回复:
user: user-0
content: 引用 2 楼 zyaiwx 的回复:另外，每次printf输出后面加一个fflush()； 可以确保缓冲区刷新，输出到界面。  谢谢，根据你的提示，两个问题都解决了. http://blog.csdn.net/reille/article/details/6886407 http://ydiandiandian.diandian.com/post/2012-05-17/40028316972

user: user-1
content: /* Program 4.12 Simple Simon */ #include <stdio.h>                     /* For input and output   */ #include <ctype.h>                     /* For toupper() function */ #include <stdbool.h>                   /* For bool, true, false  */ #include <stdlib.h>                    /* For rand() and srand() */ #include <time.h>                      /* For time() and clock() */  int main(void) {   /* Records if another game is to be played */   char another_game = 'Y';    /* true if correct sequence entered, false otherwise */   int correct = false;    /* Number of sequences entered successfully          */   int counter = 0;    int sequence_length = 0;     /* Number of digits in a sequence        */   time_t seed = 0;             /* Seed value for random number sequence */   int number = 0;              /* Stores an input digit                 */    time_t now = 0;            /* Stores current time - seed for random values  */   int time_taken = 0;        /* Time taken for game in seconds                */    /* Describe how the game is played */   printf("\nTo play Simple Simon, ");   printf("watch the screen for a sequence of digits.");   printf("\nWatch carefully, as the digits are only displayed"                                                 " for a second! ");   printf("\nThe computer will remove them, and then prompt you ");   printf("to enter the same sequence.");   printf("\nWhen you do, you must put spaces between the digits. \n");   printf("\nGood Luck!\nPress Enter to play\n");   scanf("%c", &another_game);    /* One outer loop iteration is one game */   do   {     correct = true;         /* By default indicates correct sequence entered */     counter = 0;            /* Initialize count of number of successful tries*/     sequence_length = 2;    /* Initial length of a digit sequence            */     time_taken = clock();  /* Record current time at start of game       */      /* Inner loop continues as long as sequences are entered correctly */     while(correct)     {       /* On every third successful try, increase the sequence length */       sequence_length += counter++%3 == 0;        /* Set seed to be the number of seconds since Jan 1,1970  */       seed = time(NULL);        now = clock();                  /* record start time for sequence  */        /* Generate a sequence of numbers and display the number */       srand((unsigned int)seed);      /* Initialize the random sequence */       for(int i = 1; i <= sequence_length; i++){         printf("%d ", rand() % 10);    /* Output a random digit          */         fflush(stdout);       /* Wait one second */       for( ;clock() - now < CLOCKS_PER_SEC; );        /* Now overwrite the digit sequence */       printf("\r");                   /* go to beginning of the line */       for(int i = 1; i <= sequence_length; i++)         printf("  ");                 /* Output two spaces */        if(counter == 1)           /* Only output message for the first try */         printf("\nNow you enter the sequence  - don't forget"                                                " the spaces\n");       else         printf("\r");                /* Back to the beginning of the line */        /* Check the input sequence of digits against the original */       srand((unsigned int)seed);     /* Restart the random sequence    */       for(int i = 1; i <= sequence_length; i++)       {         scanf("%d", &number);         /* Read an input number         */         if(number != rand() % 10)     /* Compare against random digit */         {           correct = false;            /* Incorrect entry             */           break;                      /* No need to check further... */         }       }       printf("%s\n", correct? "Correct!" : "Wrong!");     }      /* Calculate total time to play the game in seconds)*/     time_taken = (clock() - time_taken) / CLOCKS_PER_SEC;      /* Output the game score */     printf("\n\n Your score is %d", --counter * 100 / time_taken);      fflush(stdin);      /* Check if new game required*/     printf("\nDo you want to play again (y/n)? ");     scanf("%c", &another_game);    }while(toupper(another_game) == 'Y');   return 0; } 强制刷新输出。

user: user-0
content: 引用 1 楼 zyaiwx 的回复:代码没问题。 输出随机数后，printf("\r");这句会回到行首，擦除那行的输出的。运行太快的话，你就察觉不到了。 \r 和\n不同，建议楼主看看。 你可以用<Window.h> 里的sleep函数看看，或者断点调试一下根据代码数字应该打印出来1秒钟后消失，可是运行结果是根本没有打印出随机数

user: user-0
content: 是“\r"没错的 这个程序应该是输出几个数字后，等待一秒钟然后回到行首打印空格 遮住数字。

user: user-1
content: 另外，每次printf输出后面加一个fflush()； 可以确保缓冲区刷新，输出到界面。

user: user-1
content: 代码没问题。 输出随机数后，printf("\r");这句会回到行首，擦除那行的输出的。运行太快的话，你就察觉不到了。 \r 和\n不同，建议楼主看看。 你可以用<Window.h> 里的sleep函数看看，或者断点调试一下