2

次の C 言語コードがあります。友人のラップトップでは正常に動作していますが、私のラップトップでは動作しません。

このコードでは、この一定期間後に警告音を鳴らしたかったのですが、機能していません。助けてください。

for(i=1;i<10;i++)
{
 delay(500);
 if(i==9)
    printf("Time up \a");
}

この種の依存関係を解決するための C の解決策はありますか

4

1 に答える 1

2

おそらく、出力はstdioバッファにとどまります (それぞれFILE、特にバッファリングされます。 setvbuf(3)stdoutを参照してください)。

たとえば、 fflush(3)への呼び出しを追加することをお勧めします

for(i=1;i<10;i++) {
  delay(500); 
  if(i==9) {
    printf("Time up \a");
    fflush(stdout);
  }
}

ところで、すべてのバッファfflush(NULL);をフラッシュするために呼び出すことができます。FILE

に詳しくありませんdelay。ある種のsleep(3)だと思います。

経験則として、printfフォーマット文字列を\norで終わらstdoutせていない場合、ターミナルでない場合は、ときどき呼び出す必要がありますfflush(特にdelayorを使用sleep)。ただし、あまり頻繁に呼び出さないでください。

PS。ラップトップに Linux をインストールすることを検討してください。そして、GCCの使用を検討してください (おそらく後でMELTでカスタマイズします)。とても楽しく、フリーソフトウェアなので内部実装を勉強できます。

于 2013-05-13T23:20:45.850 に答える