힘들면 쉬었다 가자.
printf() - 출력되는 문자열의 폭 동적으로 조절하기 본문
반응형
과제로 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을 넘는 경우라면 문자열은 잘리지 않고 모든 데이터가 출력됩니다.
반응형
Comments