:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
11/03/18 11:19
printf 의 첫번째 포맷 문자열은 말 그대로 문자열입니다.
char buffer[256]; int digitNumber = 5; /* digitNumber를 계산합니다. 더 늘려줄 값으로... 자릿수는 상용 log 로 구하면 나오지 않을까 하구요. */ ... /* 포맷 식이기 때문에 %를 찍기 위해 %% 를 사용하고 스트링이기 때문에 \ 를 찍기 위해 \\를 사용합니다. digitNumber는 한 번만 써도 알아서 채울 것 같은데(맞는지 모르겠구요) 예의상 다 씁니다. */ sprintf(buffer, " [%%%d.1f %%%d.1f %%%d.1f] [%%%d.1f %%%d.1f %%%d.1f] \\n", digitNumber, digitNumber, digitNumber, digitNumber, digitNumber, digitNumber); ... printf(buffer,a,b,c,j,k,l); 실제 컴파일은 안해봤습니다. 에러가 날지도 모르겠지만 개념은 이렇다는거...
11/03/18 16:11
윗분 말씀처럼 해도 되긴한데, 이문제에 있어서는 좀더 쉬운 해결법이 있습니다.
잘쓰지는 않지만 printf 에 쓰는 포멧에 특이한게 몇개 있거든요 그중에 하나로 %*d 처럼 길이에 *을 넣는 것입니다. 이렇게 하면 길이가 뒤에 파라메터를 받아서 결정되지요 예제를 보면 아래와 같습니다. for(int i=1; i<=10; i++) printf("%0*d\n",i,i); 워낙 잘안쓰는 경우라 저도 가물가물하네요, 아무튼 위처럼하면 길이는 i, 이고 비는자리는 0으로 채워질 겁니다. 물론 %*d라고 써도 되구요. 다른 특이한 놈들도 있던데 한번 찾아보시면 재미있을 거에요.
|