tags:

views:

101

answers:

2

If I write the following program, then there is no beep sound on running the code.

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

Can you tell me how to use \a for producing beep sound using C program ?

+1  A: 

The only thing wrong (half wrong) with your program is main signature.

To be 100% portable it should be int main(void) or int main(int argc, char **argv) or equivalent: int main() is not equivalent.


And I'd print a '\n' too, or flush the output buffer rather than relying on the runtime flushing all buffers for me automatically, but your program should sound the bell as it is. If it doesn't the problem is elsewhere, not with C.

#include <stdio.h>
int main(void)
{
    printf("\a\n");
    return 0;
}
pmg
You could at least admit that C99 exists, even if you think the questioner isn't using it ;-)
Steve Jessop
Even in `C99`, `int main()` is not equivalent to one of the 2 published definitions.
pmg
It is in a definition. It isn't in other declarations. 6.7.5.3/10 and /14. They both mean "no parameters", and 5.1.2.2.1/1 specifies that `main` with no parameters is OK. It only gives one of the two ways of doing that as example code, but I don't *think* it means to imply that the other way of doing it is unacceptable.
Steve Jessop
I read the Standard the same way you do, but the text in my C89 reference is the same. I have a "gut feeling" we're missing something somewhere ... but I'm not feeling like interpreting Standardese right now. Anyway, better use one of the 2 documented definitions no matter what :)
pmg
+1  A: 

I agree with @Steve Jessop. People will go to great lengths to keep their computers quiet.

In Windows: As an alternative to "\a", you could use WinAPI's Beep command. If you are using Windows 7, this may not work as expected.

Beep Function (Windows)

Edward Leno