Vra

Hoe kan jy die% teken wanneer die gebruik van printf in C ontsnap?

printf("hello\%"); /* not like this */
Was dit nuttig?

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]

As daar geen formate in die tou, kan jy gebruik puts (of fputs ):

puts("hello%");

As daar 'n formaat in die tou:

printf("%.2f%%", 53.2);

Soos in die kommentaar, puts voeg daar 'n \n om die uitset en fputs nie.

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

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top