2017-10-13 47 views
2

這是我的代碼在CÇ - 的printf( 「 A」)將不會發出警報聲

#include <stdio.h> 

int main(){ 
    printf("\a\n"); 
    printf("Startled by the sudden sound, Sally shouted, \"By the Great Pumpkin, what was that!?\""); 
    return 0; 
} 

據稱, 「\ A \ n」 時應該發出警報聲吧?但是,由於某種原因,它並沒有這樣做。我在Ubuntu Zesty上,bash命令beep確實發出嘟嘟聲,但echo -e '\a'沒有,所以我不確定這個問題到底是什麼。

提出這個問題是因爲其他這樣的問題最終沒有產生對我來說足夠詳細/可理解的答案,或者完全不同的問題,其解決方案不適用於我。

上面鏈接的帖子坦率地說,有一個太模糊的答案。 「問題不在於C,而在於別的東西。」根本沒有幫助。

UPDATE:只是櫃面別人絆倒此,這裏是問題: 我有GNOME和WM是侏儒殼牌結果。既然如此,我不得不打開聲音設置,轉到警報,啓用它們,並使音量更高。我從未注意到殼本身可能是問題所在。在運行metacity --replace後突然意識到這一點並能夠聽到警報。

+0

可能是一個shell選項。 – Stargateur

+3

解釋「BEL」字符以發出警報是終端模擬器的工作。查看其設置並查看是否禁用了可聽鍾。終端會使用桌面發出提醒聲音,因此您還應該查看桌面的聲音設置以查看聲音是否已打開。 – user4815162342

+0

@ user4815162342如果可能在同一終端中運行的'beep'命令成功執行,則該命令指向終端本身而不是桌面。 – unwind

回答

4

你確實已經正確寫下了這個:附加的\n是不延遲嘟嘟聲輸出的慣用方式。

但是,唉,現代操作系統允許用戶配置他們的環境,所以這樣的嘟嘟聲是可以抑制的。這可能是這裏發生的:看起來你的問題更深入一點,看起來你的shell已經禁用了標準輸出的嗶嗶聲。

+1

*附加的'\ n'是不延遲嘟嘟聲輸出的慣用方式。*這只是C語言實現的慣用方法,默認爲行緩衝'stdout'。 'FILE'緩衝是實現定義的。 –

+1

...和'fflush(stdout)'是更好的IMO,因爲附加的'\ n'具有不一定需要的副作用。 –

+0

這很有道理。我試圖找到一種不壓制這種警報的方法,但我認爲這將是一條複雜的旅行道路。謝謝! – txtman