문제

내가 일하는 동안 코드 내부의 어딘가에 다음과 같은 스테이 ems를 보았습니다. 형식 지정자에 의해 혼란스러워지고 있습니다 sprintf

   d_number = strtol( tmp_buf , (char **)NULL, 16);
   memset( tmp_buf , ' ' , sizeof( tmp_buf ) );
   sprintf( tmp_buf , "%0.*d" , (int)sizeof( dec_number ) , d_number  );

아무도 제발 설명 할 수 있습니까?

도움이 되었습니까?

해결책

.* 정밀도는 형식 문자열에 지정되지 않고 형식화되어야하는 인수 앞에 추가 정수 값 인수로 지정되어 있음을 의미합니다. (d_number)

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

다른 팁

*는 (int) sizeof (dec_number)로 대체됩니다. DEC_NUMBER가 int 인 경우 많은 기계에서 %0.4D와 동일합니다. 이것이 정도 인쇄 할 정수 또는 최대 숫자 수를 인쇄 할 수 있습니다.

*는 "."의 양쪽에 나타날 수 있습니다.

sprintf(tmp_buf, "%*.*", 0, (int)sizeof(dec_number), d_number);

또한 작동합니다.

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