HP 에서 동작하는 것과 linux에서는 sprintf 사용시 포매팅에서 결과값이 차이가 있다.
[HP에서는] 포매팅에 0 이 있으면 0을 채워준다.
sprintf(tmp, "%05s", "12") -> [00012]
sprintf(tmp, "%5s", "12") -> [ 12]
sprintf(tmp, "%05ld", 12) -> [00012]
sprintf(tmp, "%5ld", 12) -> [ 12]
[리눅스에서는] %ld는 0을 채우고 %s는 스페이스를 채운다
sprintf(tmp, "%05s", "12") -> [ 12]
sprintf(tmp, "%05S", "-12") -> [ -12]
sprintf(tmp, "%5s", "12" ) -> [ 12]
sprintf(tmp, "%5s", "-12") ->[ -12]
sprintf(tmp, "%05ld", 12 ) -> [00012]
sprintf(tmp, "%05ld", -12) -> [00-12]
sprintf(tmp, "%5ld", 12) -> [ 12]
sprintf(tmp, "%5ld", -12) -> [ -12]
아래 포매팅은 HP나 리눅스나 동일하다.
sprintf(tmp, "%5.5s", "12") -> [ 12]
sprintf(tmp, "%-5.5s", "12") ->[12 ]
sprintf(tmp, "%5.5ld", 12 ) ->[00012]
sprintf(tmp, "%-5.5ld", 12) ->[00012]
아뭏든 HP와 리눅스는 printf 포매팅 처리 방법이 다르다는 것을 기억하고 테스트를 잘 해야 한다.
리눅스와 hp는 거의 동일한데 %05s 와 같이 문자열 포매팅에 0 을 넣은 것에 차이가 있다. HP에서는 0을 채워 줬지만 linux 에서는 0을 채워주지 않는다. 숫자일 때는 %05ld했을 때 hp, linux 둘다 0을 앞에 채워주고 있다.
5ㅣㅇ