質問: C言語で警報を鳴らす際に以下のようなプログラムを組んだのですが、音が鳴りません ``` #include #include int sleep(unsigned long x){ clock_t c1=clock(),c2; do{ if((c2=clock())==(clock_t)-1) return 0; }while(1000.0*(c2-c1)/CLOCKS_PER_SEC0;i--){ printf("\r%2d",i); fflush(stdout); sleep(1000); } printf("\r\aFire!\n"); c=clock(); printf("プログラム開始から%.1f経過しました\n",(double)c/CLOCKS_PER_SEC); return 0; } ``` そこで質問なのですが、 1なぜ音がならないのか 環境はOSはwindows 10 Proです プログラムのコンパイル、実行はCygwinでおこなってます 2仮に環境の問題であるとして、警報音を鳴らす別の方法としてどのようなものがあるのか どちらか片方だけでもいいのでお答えいただけるとありがたいです
回答: VC++でコンパイルしてみましたが、ちゃんと音は鳴っていますね。 `\a`をどう処理するかは処理系(というか標準出力の送り先)によって変わるので、必ずしも音が出るとは限りません。Cygwinでは音を鳴らさないのかもしれません。 > > 2仮に環境の問題であるとして、警報音を鳴らす別の方法としてどのようなものがあるのか > > > Windowsなら、Win32 API の`MessageBeep`関数がお手軽です。 警告音なら`MessageBeep(MB_ICONEXCLAMATION)`ですかね。ほかにもいくつか音が選べます。詳しくはリファレンスを参照ください。