Hoe om die% (persent) teken in printf C se ontsnap?
-
13-09-2019 - |
Vra
Hoe kan jy die% teken wanneer die gebruik van printf
in C ontsnap?
printf("hello\%"); /* not like this */
Oplossing
Jy kan dit ontsnap deur te plaas 'n dubbel '%' soos volg: %%
Die gebruik van jou voorbeeld:
printf("hello%%");
Ontsnapping '% 'n teken is slegs vir printf. As jy dit doen:
char a[5];
strcpy(a, "%%");
printf("This is a's value: %s\n", a);
Dit sal druk: This is a's value: %%
Ander wenke
Soos ander het gesê, %% sal die% ontsnap.
Let egter daarop dat jy nooit dit sou doen:
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
Wanneer jy 'n string te druk, altyd, altyd, altyd druk dit met behulp van
printf("%s", c)
om 'n geïntegreerde% verhoed probleme veroorsaak [geheue oortredings, segfault, ens]
Met self ...
printf("hello%%"); /* like this */
nitpick:
Jy hoef nie regtig ontsnap die %
in die string wat die formaat spesifiseer vir die printf()
(en scanf()
) familie van funksies.
Die %
, in die printf()
(en scanf()
) familie van funksies, begin 'n sukses spesifikasie. Een van die reëls vir omskakeling spesifikasie bepaal dat 'n %
as 'n sukses specific (onmiddellik na die %
dat die omskakeling spesifikasie begin) veroorsaak 'n '%'
karakter geskryf word met geen argument omskep.
Die string regtig het 2 '%'
karakters in (in teenstelling met die ontsnapping karakters: "a\bc"
is 'n string met 3 nie nul karakters; "a%%b"
is 'n string met 4 nie nul karakters).
gebruik 'n dubbele %%
Soos hierdie:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
Die agteroorskuinsstreep in C gebruik word om karakters in stringe ontsnap. Strings sal nie% erken as 'n spesiale karakter, en dus geen ontsnapping sou nodig wees. Printf is 'n ander saak. Gebruik %% om een% druk
Yup, gebruik printf ( "hallo %%"); en dit gedoen.
Jy kan eenvoudig %
twee keer gebruik, dit wil sê "%%"
Voorbeeld:
printf("You gave me 12.3 %% of profit");
Jy kan gebruik %%:
printf("100%%");
Die resultaat is:
100%
wat jy gebruik verkeerde formaat specific moet jy %%
gebruik vir die druk van %
. Jou kode moet wees:
printf("hello%%");
Lees meer al formaat spesifiseerders gebruik in C .
Die dubbel '%' werk ook in ".Format (...).
Voorbeeld (met iDrawApertureMask == 87, fCornerRadMask == 0.05):
csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;
gee die gewenste en verwagte waarde van (string inhoud in) csCurrentLine;
"% ADD87C, 0,0500 *%"