IT

C의 printf에서 % (퍼센트) 기호를 이스케이프 처리하는 방법은 무엇입니까?

lottoking 2020. 3. 30. 08:55
반응형

C의 printf에서 % (퍼센트) 기호를 이스케이프 처리하는 방법은 무엇입니까?


printfC에서 사용할 때 % 부호를 어떻게 피 합니까?

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 등]


문자열에 형식이 없으면 puts(또는 fputs)을 사용할 수 있습니다 .

puts("hello%");

문자열에 형식이있는 경우 :

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

주석에서 언급했듯이 putsa \n를 출력에 추가 하고 fputs그렇지 않습니다.


그 자체로 ...

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

Nitpick : (및 ) 함수 패밀리의 형식을 지정하는 문자열에서
실제로 이스케이프하지 않습니다 .%printf()scanf()

%의에 printf()(및 scanf()기능) 가족, 변환 사양을 시작합니다. 변환 스펙에 대한 규칙 중 하나는 변환 스펙 을 시작한 %직후 ( %변환 스펙을 시작한 직후 ) '%'인수를 변환하지 않고 문자를 씁니다.

문자열 에는 실제로 2 개의 '%'문자가 있습니다 (이스케이프 문자와 달리 : "a\bc"null이 아닌 문자가 3 인 문자열이고 null이 아닌 문자 "a%%b"가 4 인 문자열).


이중 %%를 사용하십시오


이처럼 :

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

C의 백 슬래시는 문자열의 문자를 이스케이프하는 데 사용됩니다. 문자열은 %를 특수 문자로 인식하지 않으므로 이스케이프가 필요하지 않습니다. Printf는 또 다른 문제입니다. %%를 사용하여 하나의 %를 인쇄하십시오.


예, printf ( "hello %%"); 그리고 끝났어.


간단히 %두 번 사용할 수 있습니다."%%"

예:

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

당신이 사용할 수있는 %%:

printf("100%%");

결과는 다음과 같습니다.

100 %


%%인쇄시 사용해야하는 잘못된 형식 지정자를 사용 하고 있습니다 %. 코드는 다음과 같아야합니다.

printf("hello%%");  

C에서 사용되는 모든 형식 지정자를 더 읽으십시오 .


이중 '%'는 ".Format (…)에서도 작동합니다. 예 (iDrawApertureMask == 87, fCornerRadMask == 0.05) : csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;원하는 (예 : csCurrentLine 의 문자열 내용) csCurrentLine;"% ADD87C, 0.0500 * % "

참고 URL : https://stackoverflow.com/questions/1860159/how-to-escape-the-percent-sign-in-cs-printf

반응형