C의 printf에서 % ( %) 로그인을 피하는 방법?
-
13-09-2019 - |
문제
사용할 때 % 부호를 어떻게 탈출합니까? printf
C에서?
printf("hello\%"); /* not like this */
해결책
다음과 같은 이중 '%'를 게시하여 탈출 할 수 있습니다. %%
예제 사용 :
printf("hello%%");
'%'표지판 에스케이프는 printf에만 해당됩니다. 당신이하는 경우 :
char a[5];
strcpy(a, "%%");
printf("This is a's value: %s\n", a);
인쇄 할 것입니다 : This is a's value: %%
다른 팁
다른 사람들이 말했듯이 %%는 %를 피할 것입니다.
그러나 절대 그렇게해서는 안된다는 점에 유의하십시오.
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
문자열을 인쇄해야 할 때마다 항상, 항상, 항상 인쇄하십시오.
printf("%s", c)
임베디드 %가 문제를 일으키는 것을 방지하기 위해 [메모리 위반, segfault 등
그 자체로 ...
printf("hello%%"); /* like this */
nitpick :
당신은 실제로 탈출하지 않습니다 %
문자열에서 printf()
(그리고 scanf()
) 기능의 가족.
그만큼 %
,에서 printf()
(그리고 scanf()
) 함수 제품군, 변환 사양을 시작합니다. 전환 사양에 대한 규칙 중 하나는 %
변환 지정자 (바로 다음 %
변환 사양을 시작한) 원인 a '%'
논쟁없이 쓴 캐릭터.
문자열 진짜 2가 있습니다 '%'
내부 캐릭터 (캐릭터를 피하는 것과는 반대로 : "a\bc"
3 개의 비 널 문자가있는 문자열입니다. "a%%b"
4 개의 비 널 문자가있는 문자열입니다).
이중 %% 사용
이와 같이:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
C의 백 슬래시는 문자열에서 문자를 탈출하는 데 사용됩니다. 문자열은 %를 특별한 캐릭터로 인식하지 못하므로 탈출이 필요하지 않습니다. printf는 또 다른 문제입니다. %%를 사용하여 1 %를 인쇄하십시오.
예, printf ( "hello %%")를 사용하십시오. 그리고 끝났습니다.
간단히 사용할 수 있습니다 %
두 번 "%%"
예시:
printf("You gave me 12.3 %% of profit");
당신이 사용할 수있는 %%:
printf("100%%");
결과는 다음과 같습니다.
100%
Double '%'는 ".format (…). example에서도 작동합니다 (idrawaperturemask == 87, fcornerradmask == 0.05) :csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;
Cscurrentline의 원하는 및 예상 값을 제공합니다. "%add87c, 0.0500*%"