a
is the format. However, this kind of usage is very dangerous because lots of people forget that a
is a format and instead think it's a literal string. The difference is that, if a
happened to contain %
, it would be interpreted as a format specifier, but you have no arguments for to specifier to go with.
When printing a single message string with printf
, you should always instead do:
printf("%s", a);
Or just use puts
if appropriate.