-->

How to escape the % (percent) sign in C's prin

2018-12-31 17:03发布

问题:

How do you escape the % sign when using printf in C?

printf(\"hello\\%\"); /* not like this */

回答1:

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: %%



回答2:

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]



回答3:

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.



回答4:

With itself...

printf(\"hello%%\"); /* like this */


回答5:

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).



回答6:

use a double %%



回答7:

Like this:

printf(\"hello%%\");
//-----------^^ inside printf, use two percent signs together


回答8:

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 %.



回答9:

Yup, use printf(\"hello%%\"); and it\'s done.



回答10:

You can simply use % twice, that is \"%%\"

Example:

printf(\"You gave me 12.3 %% of profit\");


回答11:

You can use %%:

printf(\"100%%\");

The result is:

100%



回答12:

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.



回答13:

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*%\"



回答14:

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