How do you escape the % sign when using printf
in C?
printf("hello\%"); /* not like this */
This question is related to
c
printf
format-string
use a double %%
You can simply use %
twice, that is "%%"
Example:
printf("You gave me 12.3 %% of profit");
The double '%' works also in ".Format(…).
Example (with iDrawApertureMask == 87, fCornerRadMask == 0.05):
csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;
gives the desired and expected value of (string contents in) csCurrentLine;
"%ADD87C, 0.0500*%"
Nitpick:
You don't really escape the %
in the string that specifies the format for the printf()
(and scanf()
) family of functions.
The %
, in the printf()
(and scanf()
) family of functions, starts a conversion specification. One of the rules for conversion specification states that a %
as a conversion specifier (immediately following the %
that started the conversion specification) causes a '%'
character to be written with no argument converted.
The string really has 2 '%'
characters inside (as opposed to escaping characters: "a\bc"
is a string with 3 non null characters; "a%%b"
is a string with 4 non null characters).
As others have said, %% will escape the %.
Note, however, that you should never do this:
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
Whenever you have to print a string, always, always, always print it using
printf("%s", c)
to prevent an embedded % from causing problems [memory violations, segfault, etc]
The backslash in C is used to escape characters in strings. Strings would not recognize %
as a special character, and therefore no escape would be necessary. printf
is another matter: use %%
to print one %
.
With itself...
printf("hello%%"); /* like this */
Yup, use printf("hello%%");
and it's done.
Like this:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
You can use %%:
printf("100%%");
The result is:
100%
you are using incorrect format specifier you should use %%
for printing %
. Your code should be:
printf("hello%%");
Read more all format specifiers used in C.
Source: Stackoverflow.com