次の C 言語コードがあります。友人のラップトップでは正常に動作していますが、私のラップトップでは動作しません。
このコードでは、この一定期間後に警告音を鳴らしたかったのですが、機能していません。助けてください。
for(i=1;i<10;i++)
{
delay(500);
if(i==9)
printf("Time up \a");
}
この種の依存関係を解決するための C の解決策はありますか
おそらく、出力は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
フォーマット文字列を\n
orで終わらstdout
せていない場合、ターミナルでない場合は、ときどき呼び出す必要がありますfflush
(特にdelay
orを使用sleep
)。ただし、あまり頻繁に呼び出さないでください。
PS。ラップトップに Linux をインストールすることを検討してください。そして、GCCの使用を検討してください (おそらく後でMELTでカスタマイズします)。とても楽しく、フリーソフトウェアなので内部実装を勉強できます。