Linux printf 명령은 선행 0을 인쇄하지 않습니다.

Linux printf 명령은 선행 0을 인쇄하지 않습니다.
printf("TRL1%13s%013s%07s%07s%80s99%74s", nTotDBAmt, nTotCRAmt, nTotDBCnt, nTotCRCnt,"", "") >> sDAT_FILE

우리는 Unix에서 Linux로 마이그레이션하고 있습니다. 이 명령은 유닉스에서는 잘 작동하지만 리눅스에서는 작동하지 않습니다. 그것은 인쇄한다

TRL1     46038002   1270804215   1857   1843                                                                                99 

0 대신 공백을 인쇄합니다.

답변1

리눅스는 보통GNU awk설치하다. 어떤 버전인지는 모르겠습니다%s 형식 문자열의 앞에 오는 0이 지원되지만 비표준인 것 같습니다.

%013s 대신 %013d를 사용해 보세요.

답변2

질문에서 달성하려는 목표가 정확히 무엇인지 명확하지 않습니다.

십진수를 인쇄하고 싶다면 다음과 같이 쓰겠습니다.

printf("%013d",a);

0- 공백 대신 0으로 왼쪽 숫자를 채웁니다.

문자를 인쇄하고 싶다면 다음과 같이 쓰겠습니다.

printf("%*s",13,"string which needs to be printed")

여기에서는 printf()에 대한 정수 인수로 인쇄할 문자 길이를 지정합니다. *이는 전달된 인수로 대체됩니다.

관련 정보