본문 바로가기
공부하며놀자/프로그래밍

[프로그래밍][c++] printf string format %*.*s

by 테너토너 2016. 8. 11.

코드를 보다가 처음 보는 외계어를 발견했다.

예를 들자면,

printf("%*.*s", 20, 10, "abcdefghijklmn");


보기 쉽게 하기위해서 공백(space)를 ^ 로 표현 하겠다.

위 예제의 output은 아래와 같다.

^^^^^^^^^^abcdefghij

즉, '.' 앞의 숫자 20은 전체 폭이고, 뒤의 숫자는 보여질 갯수이다.

다르게 표현한다면,

printf("%20.10s", "abcdefghijklmn");

위와 같이 표현 할 수 있다.


가변적으로 하려면 위와 같이 하면 된다.


몇 가지 exercise를 해보면

printf("%*.*d", 20,10, 13);

=> ^^^^^^^^^^0000000013


printf("%*.d", 20, 13);

=> ^^^^^^^^^^^^^^^^^^13


printf("%*.s", 20,"abcde");

=> ^^^^^^^^^^^^^^^^^^^^   //헷갈림, 숫자로 할 때는 잘 됐는데...string은 생각한데로 안된다..


printf("%*.*s", 20,1,"abcde");

=> ^^^^^^^^^^^^^^^^^^^a





신기한게 많다.

반응형

댓글