카테고리 없음

U2L프로젝트 sprintf 포매팅

멜번초이 2023. 4. 27. 21:04

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ㅣㅇ