2010-10-02 33 views
10

Nếu tôi viết chương trình sau, thì không có tiếng bíp khi chạy mã.Làm thế nào để tạo ra âm thanh bíp sử dụng ký tự thoát " a"?

#include <stdio.h> 
int main() 
{ 
    printf("\a"); 
    return 0; 
} 

Bạn có thể cho tôi biết cách sử dụng \a để sản xuất âm thanh tiếng bíp bằng chương trình C không?

+3

Đó là lên đến thiết bị đầu cuối, mà phụ thuộc vào cách bạn đang chạy chương trình. Nếu stdout được chuyển hướng đến một tập tin, không có tiếng bíp cho đến khi bạn hiển thị tập tin. Mặc dù vậy, không phải tất cả các thiết bị đầu cuối thực sự bíp khi họ nhận được một nhân vật ascii BEL. Tôi cho một vô hiệu hóa nó nếu tôi có thể. Đối với vấn đề đó trên các máy được sử dụng tại nơi làm việc, tôi thường rút dây cáp ra loa bên trong của máy tính, và tắt âm thanh còn lại trừ khi tôi cắm tai nghe. Chúc may mắn nhận được một tiếng bíp ... –

+1

Sự bi thảm nhất tiếng bíp là tiếng bíp từ máy tính xách tay, được phát ra từ âm lượng không thể tin được thông qua loa "bình thường". –

+2

btw, bạn * phải * chạy chương trình từ thiết bị đầu cuối, vì tiếng bíp khi in '\ a' là tính năng đầu cuối (không phải tính năng C hoặc OS). –

Trả lời

3

Điều duy nhất sai (nửa sai) với chương trình của bạn là main chữ ký.

Để di chuyển 100%, phải là int main(void) hoặc int main(int argc, char **argv) hoặc tương đương: int main() không tương đương.


Và tôi muốn in một '\n' quá, hoặc tuôn bộ đệm đầu ra chứ không phải là dựa vào thời gian chạy đỏ bừng tất cả bộ đệm cho tôi tự động, nhưng chương trình của bạn nên âm thanh chuông như nó được. Nếu nó không phải là vấn đề là ở nơi khác, không phải với C.

#include <stdio.h> 
int main(void) 
{ 
    printf("\a\n"); 
    return 0; 
} 
+0

Bạn có thể ít nhất thừa nhận rằng C99 tồn tại, ngay cả khi bạn nghĩ người hỏi không sử dụng nó ;-) –

+0

Ngay cả trong 'C99',' int main() 'không tương đương với một trong 2 định nghĩa đã xuất bản. – pmg

+0

Nó ở định nghĩa. Nó không nằm trong các tờ khai khác. 6.7.5.3/10 và/14. Cả hai đều có nghĩa là "không có tham số", và 5.1.2.2.1/1 xác định rằng 'main' không có tham số là OK. Nó chỉ cho một trong hai cách để làm điều đó như mã ví dụ, nhưng tôi không * nghĩ * nó có nghĩa là ngụ ý rằng cách khác để làm điều đó là không thể chấp nhận được. –

1

Tôi đồng ý với @Steve Jessop. Mọi người sẽ đi đến độ dài tuyệt vời để giữ cho máy tính của họ yên tĩnh.

Trong Windows: Để thay thế cho "\ a", bạn có thể sử dụng lệnh Beep của WinAPI. Nếu bạn đang sử dụng Windows 7, điều này có thể không hoạt động như mong đợi.

Beep Function (Windows)

-3
#include<stdio.h> 
#include<windows.h> 

int main() 
{ 
    Beep(1000, 1000); /* you can use any number starting from 250, but make sure you use       it both times 


    return 0; 

} 
+3

1. Câu trả lời chỉ có mã là xấu; 2. Anh ấy trên Linux; 3. Ông nói rõ ràng 'sử dụng \ a' – Kevin

0

Nếu bạn đang sử dụng Windows, Windows phiên bản làm cho tiếng bíp cách rất khác nhau. Một số người trong số họ cho phép điều đó và làm việc tốt, nhưng một số phiên bản cửa sổ thì không. Trong một số cửa sổ, nó hoạt động chỉ trong trường hợp đó, nếu bạn có một loa bo mạch chủ bên trong. Nhưng một số cửa sổ khác, nó hoạt động tốt mà không có loa bo mạch chủ bên trong, trực tiếp từ card âm thanh (mà sẽ được tốt đẹp!).

Nếu bạn may mắn và sử dụng phiên bản cửa sổ thích hợp, tiếng bíp/Beep/printf ("\ a") sẽ hoạt động (trên loa bên trong (nếu bạn có) hoặc trường hợp tốt nhất qua soundcard). Nhưng nếu bạn đang sử dụng một phiên bản cửa sổ khác, nó sẽ không hoạt động. Nếu trong máy tính của bạn thì không sao, máy tính của bạn bè/người trong gia đình bạn sẽ im lặng, và anh ấy/cô ấy sẽ nghĩ rằng bạn đã viết một chương trình xấu :-D nhưng không.

Lời khuyên của tôi, rằng bạn nên sử dụng thư viện âm thanh. Nó đơn giản, đa nền tảng, và nó sẽ làm việc luôn luôn tất cả các lần tất cả các máy tính vv Ví dụ, Allegro_v4, Allegro_v5, SDL (Simple DirectMedia Layer), hoặc một cái gì đó như thế. Những thư viện này hoạt động tốt với OpenGL/DirectX và với các thư viện này, bạn có thể tải hình ảnh, phát video và những thứ tương tự. Native OpenGL/GLUT/DirectX không thể làm những việc như vậy.

-2

tôi thường sử dụng một cách khác để có được những tiếng bíp âm thanh nó hoạt động 100% trên cửa sổ 7.

int x=7; //7 is beep sound other numbers may show emoji and characters 
    printf("%c",x); 
Các vấn đề liên quan