힘들면 쉬었다 가자.

printf() - 출력되는 문자열의 폭 동적으로 조절하기 본문

프로그래밍/C/C++

printf() - 출력되는 문자열의 폭 동적으로 조절하기

오클라호마호 2011. 3. 1. 16:46

과제로 ls 프로그램을 만드는게 나와서 과제 하던 중..

" -l " 옵션을 구현할라고 하는데 출력 문자열의 필드 폭을 조절 run-time에 조절 해야 하더군요

 

리눅스에서의 구현은 출력 되는 각 필드의 문자열들 중에서

가장 폭이 넓은 녀석을 기준으로 폭을 잡아주도록 되어있었습니다.

 

그냥 C 프로그래밍 할 때는 소스 코드에 static하게

  printf("%5d", some_value);

이런식으로는 많이 썼었는데..

 

run-time에 제어 할일은 별로 없어서 난감하더군요-_-;;

 

적절히 계산해서 공백문자를 계속 찍어줘야 하나.. 생각했는데

언어에서 지원을 해주네요..ㅋㅋ

 

아 뭐 서론이 길었고..

 

-------------------------------------------

 

리눅스라면

  man 3 printf

쳐 보시면 되고..

 

ms 컴파일러라면

  http://msdn2.microsoft.com/en-us/library/25366k66(VS.80).aspx

 

두 경우 모두 같습니다.

 


printf("%*d", width, some_value);

 

이런식으로 "*" 를 붙여주시고, 뒤에 인자로 폭을 정해주면

해당 폭으로 출력이 됩니다.

 


아, 그리고 혹시나 해서..

저 width는 "최소" 문자열 폭입니다.

만약 width를 10으로 지정해 줬을 때

출력 문자열의 길이가 width 보다 작다면 10으로 고정이 되지만

10을 넘는 경우라면 문자열은 잘리지 않고 모든 데이터가 출력됩니다.

 

 

 

 

'프로그래밍 > C/C++' 카테고리의 다른 글

무한루프  (0) 2011.03.01
Comments