Thursday, June 01, 2006
C언어] printf() 함수로, PC스피커에서, 비프음(Beep; 삑 하는 소리) 내기
옛날의 프로그램들은, 심각한 에러가 발생했을 때, PC스피커로 삑 하는 소리를 내었습니다. 이것을 비프음이라고 합니다.
음악용 스피커는 비상시에 작동하지 않을 가능성이 높기 때문에, 최악의 경우에도 잘 작동하는 PC스피커로 에러를 알리는 것입니다. 물론 옛날에는 음악용 스피커나 사운드카드가 없는 PC도 아주 많았습니다. 사무용 PC는 대부분 그랬습니다.
하드웨어를 직접 제어할 필요는 없습니다. 십육진수로 07 에 해당하는 아스키 문자를, 표준출력으로, 쉽게 말해서 '명령 프롬프트 화면'으로 출력하면 삑 하는 비프음이 나게 됩니다.
C언어에서는, 십육진수로 07 에 해당하는 아스키 문자를 \a 라고 정의해 놓았습니다.
따라서 printf() 함수나 puts() 함수 등으로 \a 를 화면에 출력하면 삑 하는 소리가 나게 됩니다. 그러나 소리만 나고 화면에는 아무것도 출력되지 않습니다. '소리 문자'인 것입니다.
다만 puts() 함수는 개행문자인 \n을 자동으로 붙이기 때문에, 삑 소리만 내려는 경우에는 printf() 함수가 좋겠지요.
위의 코드를 beep.c 등의 이름으로 저장하고 C컴파일러로 컴파일하면 beep.exe 라는 파일이 만들어집니다. 이제 명령 프롬프트 화면에서 beep 라고 치면 삑 소리가 납니다.
beep() 함수를 따로 만들어서 분리하려면 다음과 같이 하면 됩니다:
그렇지만 비프음은 되도록 사용하지 않는 것이 좋습니다. 사용자가 깜짝깜짝 놀라게 되고 스트레스가 쌓이게 됩니다: [리눅스/Linux] 레드햇 9.0에서, 삑삑거리는 비프음(Beep) 끄기
관련 게시물: 배치 파일에서, PC스피커로, 비프음(Beep; 삑 하는 소리) 내기
음악용 스피커는 비상시에 작동하지 않을 가능성이 높기 때문에, 최악의 경우에도 잘 작동하는 PC스피커로 에러를 알리는 것입니다. 물론 옛날에는 음악용 스피커나 사운드카드가 없는 PC도 아주 많았습니다. 사무용 PC는 대부분 그랬습니다.
비프음 내기
하드웨어를 직접 제어할 필요는 없습니다. 십육진수로 07 에 해당하는 아스키 문자를, 표준출력으로, 쉽게 말해서 '명령 프롬프트 화면'으로 출력하면 삑 하는 비프음이 나게 됩니다.
C언어에서는, 십육진수로 07 에 해당하는 아스키 문자를 \a 라고 정의해 놓았습니다.
따라서 printf() 함수나 puts() 함수 등으로 \a 를 화면에 출력하면 삑 하는 소리가 나게 됩니다. 그러나 소리만 나고 화면에는 아무것도 출력되지 않습니다. '소리 문자'인 것입니다.
다만 puts() 함수는 개행문자인 \n을 자동으로 붙이기 때문에, 삑 소리만 내려는 경우에는 printf() 함수가 좋겠지요.
#include <stdio.h>
void main(void) {
printf("\a");
}
void main(void) {
printf("\a");
}
위의 코드를 beep.c 등의 이름으로 저장하고 C컴파일러로 컴파일하면 beep.exe 라는 파일이 만들어집니다. 이제 명령 프롬프트 화면에서 beep 라고 치면 삑 소리가 납니다.
beep() 함수를 따로 만들어서 분리하려면 다음과 같이 하면 됩니다:
#include <stdio.h>
void beep(void);
void main(void) {
beep();
}
void beep(void) {
printf("\a");
}
void beep(void);
void main(void) {
beep();
}
void beep(void) {
printf("\a");
}
그렇지만 비프음은 되도록 사용하지 않는 것이 좋습니다. 사용자가 깜짝깜짝 놀라게 되고 스트레스가 쌓이게 됩니다: [리눅스/Linux] 레드햇 9.0에서, 삑삑거리는 비프음(Beep) 끄기
관련 게시물: 배치 파일에서, PC스피커로, 비프음(Beep; 삑 하는 소리) 내기
tag: cpp
C언어 | C/C++ (Visual C++)
int 대신에 void를 이용해도 돼는건가요?
위의 소스의 함수는 아무것도 반환하지 않고, 아무런 인수도 입력받지 않기에 void 를 사용했습니다. int 반환값이 있을 경우에만 int 를 사용합니다.
<< Home