문제

사용할 때 % 부호를 어떻게 탈출합니까? 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 등

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

puts("hello%");

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

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

의견에 언급 된 바와 같이 puts 추가 a \n 출력 및 fputs 하지 않습니다.

그 자체로 ...

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%

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

printf("hello%%");  

더 읽으십시오 c에 사용 된 모든 형식 지정자.

Double '%'는 ".format (…). example에서도 작동합니다 (idrawaperturemask == 87, fcornerradmask == 0.05) :csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;Cscurrentline의 원하는 및 예상 값을 제공합니다. "%add87c, 0.0500*%"

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top