餃子を食べるとき、何をつけますか?

C言語での制御文字「\a」を使ってビープ音を出したいのですが出ません。何がおかしいのでしょうか?
・・・・・・・・・・・・・・・・・・・・・・・・・
#include <stdio.h>

main () {
printf("\a");
return 0;
}
・・・・・・・・・・・・・・・・・・・・・・・・・
これをコンパイルして実行しても何も起きないのです。
昨日から独学でがんばっているのですが、早々に詰まってしまいました。^^;
お分かりになられる方がいらっしゃれば教えてください。
おねがいします。

A 回答 (7件)

年寄りの自作ディスクトップパソコンには、



☆サウンドドライバで制御されるディスプレイ付属の「スピーカー」(●)
☆ビープ音だけを出す本体「スピーカー」(◆)

の2つがあります。

●からは、音量を最大にしても、聞こえませんでした。
◆からは、ビープ音が出ました(当たり前か)。

というか、サウンドドライバに依る「スピーカー」を、printf() で制御できるのかなぁ?。

printf( "\a" );
printf( "%c", 0x07 );
↑◆で、ともに鳴ります。

>何がおかしいのでしょうか?

(サウンドドライバで制御される)「スピーカー」の音量を最小またはミュートして、耳を澄ましてみれば・・。

☆もし質問者様がノートパソコンでしたら・・、年寄りの「アドバイス」は参考にはならないかと思います。

参考URL:http://e-words.jp/p/r-ascii.html
    • good
    • 0
この回答へのお礼

今、別のパソコンで実行しましたところ音がでました。
また、リモートデスクトップから起動し実行しましたがそちらでも音を確認できました。

自作機でサウンドカードを入れていないのが原因だとおもわれました。

一度、
>>(サウンドドライバで制御される)「スピーカー」の音量を最小またはミュートにして、耳を澄ましてみれば・・。
これを試してみようとおもいます。
回答ありがとうございました。
これでほとんど解決です^^

お礼日時:2008/04/01 09:02

ANo. 6 で書いたことの訂正です。



> Visual Basic 2005 Express Edition にてコンパイルしたもの(4 種類のバイナリ)

Visual C++ 2005 Express Edition です。
VB で Console.Write(Chr(7)) でも試したので間違って書いてしまいました。
失礼致しました、申し訳ありません。
    • good
    • 0

> OSはXP


> CコンパイラはBorland C++ Compiler5.5

機種が書いてないのでなんとも言えませんがたぶん音が出ると思います。
もしかして「本体のスピーカとサウンドカードの……」とも思いましたが、それは ANo.5 の
御方の既に仰られているので。

念のためにパソコンの音量が下がっていないかも確認して、どうしても音が出ないのであれば、
お友達のパソコンで実行させてもらってみてはいかがでしょうか?

※ 下記は蛇足というか余談ですので軽く受け流しておいてください。

こちらで確認したもの。

(1) Linux
GCC でコンパイルしたもの
Linux のローカル端末 ○
Putty(ssh 接続ソフトウェア) + リモートの Linux ○
# これはローカルで ASCII コードを処理するので鳴ると予想されました。
VNC(リモートデスクトップのようなもの) + リモートの Linux + gnome-terminal ○
Xming(Windows のXserver) + gnome-terminal ○
# VNC と Xming で鳴るのは不思議ですが、何か仕掛けがあるのでしょう。

リモートのパソコンから音が出るのではなく、音が出るのは操作している側のパソコンの話です。

(2) Windows
MinGW(GCC)、Cygwin(GCC)、Borland C++ Compiler 5.5 Free、
Visual Basic 2005 Express Edition にてコンパイルしたもの(4 種類のバイナリ)
Windows 2000 のコマンド プロンプト ○
Windows XP のコマンド プロンプト ○

それぞれ音色は違ったのですが、上記の環境では音が鳴らないものはありませんでした。

\a の a は Alert の略なので、おそらく警告として音が出ればよいのでしょう。

ちなみに、これらも音が出ました。
# 当たり前なんですが。

/* 16進数表記 */
printf("\x07");
/* 8進数表記 */
printf("\007");
printf("\7");
/* 文字出力フォーマット */
printf("%c", 0x07);
    • good
    • 0
この回答へのお礼

>>もしかして「本体のスピーカとサウンドカードの……」とも思いましたが
まさにコレでした。
別のパソコンや違うPCからのリモートデスクトップからでも音が確認できましたので・・・^^;
サウンドカードは入れていないとやははり音がならないのでしょうか?
機種は自作機で予算の都合サウンドカードは入れてなかったもので・・・
音はスピーカーからサウンドドライバ制御で出力していました。
やはり、今回のビープ音はサウンドドライバで制御できていなかったのでしょうか?

回答ありがとうございました。

お礼日時:2008/04/01 09:08

ASCIIコードでベルは0x07です


エスケープ文字では\aは警告文字で一般にASCIIコードの0x07であらわされます(\nが0x0aになるように)
コマンドプロンプトでは\aは使えないのではないでしょうか
    • good
    • 0

あ、間違えたか、\x7だったか?まあ、アスキーコードでいえば、ビープ音は7です。

    • good
    • 0

>>制御文字「\a」を使ってビープ音



なにを参考にされたのでしょう?さしあたり、ビープ音なら、\aじゃあなく、\7ではないですか。
    • good
    • 1
この回答へのお礼

参考書には「¥a」でベル(ビープ音)が出ると書かれているのですが・・・
ソースがわかりません。教えていただけないでしょうか?

お礼日時:2008/03/31 08:03

> 何がおかしいのでしょうか?



コード自体は main() が int main() になってないぐらいしか……
# それは音が出る出ないには関係ないですから。

お使いの OS やコンパイル環境なども詳しくお書きになると何かわかるかも知れません。
    • good
    • 0
この回答へのお礼

遅れました。
OSはXP
CコンパイラはBorland C++ Compiler5.5
を使っています。

制御符号も
\a・・・ベルを鳴らす
\b・・・1文字戻る
\0・・・ヌル文字
などと参考書に書かれていましたが
ビープ音(ベルの音)は鳴りません。
それぞれどのような効果があるか試して見たいのですがソースがわからずに困っています。
よろしくお願いします。

お礼日時:2008/03/31 08:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報