0

私はプログラミングが初めてです。プログラムの実行を遅くするために時間遅延を見つけようとしています。nanosleep私は調査を行ってきましたが、読んだことがある機能を見つけることができず、sleep両方を試しましたが、それらを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 ループ内で、次の反復の前にデータをファイルに書き出します。それ以外の場合は、バッファーに行を書き込み、1 秒スリープし、バッファーに書き込み、1 秒スリープし、バッファーがいっぱいになったとき、またはfclose(fp)が呼び出されたときに、バッファーをファイルにフラッシュします。 man fflush詳細については。

于 2013-02-24T07:48:36.100 に答える