0

我是编程新手。我一直试图找出一个时间延迟来减慢我的程序的执行速度。我一直在做研究,找不到一个我读过的有用的东西nanosleepsleep我都试过了,但是当我把它们放在for循环中时,它会等待几秒钟,然后执行整个for循环,而不会在迭代之间暂停。也许我的代码有错误?我已经把它包括在下面了。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
   int main(void)
   {
      FILE *fp;
      int i;

      /* open the file */
      fp = fopen("/dev/pi-blaster", "w");
      if (fp == NULL) {
         printf("I couldn't open pi-blaster for writing.\n");
         exit(0);
      }

      /* write to the file */
    for(i=99;i>=0;i--){
      sleep(1);
      fprintf(fp, "0=0.%d\n",i);
    }
      /* close the file */
      fclose(fp);

      return 0;
   }
4

1 回答 1

4

fp正在缓冲 对文件的写入。fflush(fp)在 for 循环中,因此它在下一次迭代之前将数据写入文件。否则,它将向缓冲区写入一行,休眠一秒钟,写入缓冲区,休眠一秒钟等,然后在缓冲区填满或fclose(fp)调用时将缓冲区刷新到文件中。 man fflush更多细节。

于 2013-02-24T07:48:36.100 回答