How do you escape the % sign when using printf
in C?
printf(\"hello\\%\"); /* not like this */
How do you escape the % sign when using printf
in C?
printf(\"hello\\%\"); /* not like this */
You can escape it by posting a double \'%\' like this: %%
Using your example:
printf(\"hello%%\");
Escaping \'%\' sign is only for printf. If you do:
char a[5];
strcpy(a, \"%%\");
printf(\"This is a\'s value: %s\\n\", a);
It will print: This is a\'s value: %%
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]
If there are no formats in the string, you can use puts
(or fputs
):
puts(\"hello%\");
if there is a format in the string:
printf(\"%.2f%%\", 53.2);
As noted in the comments, puts
appends a \\n
to the output and fputs
does not.
With itself...
printf(\"hello%%\"); /* like this */
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).
use a double %%
Like this:
printf(\"hello%%\");
//-----------^^ inside printf, use two percent signs together
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 %.
Yup, use printf(\"hello%%\"); and it\'s done.
You can simply use %
twice, that is \"%%\"
Example:
printf(\"You gave me 12.3 %% of profit\");
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.
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*%\"
Use this:
#include <stdio.h>
printf(\"hello%s%s\");
A Complete list of format specifiers used with printf can be found here:
http://www.mekong.net/tech/printf.htm