C에서 선행 0을 인쇄합니까?
우편 번호에 01001과 같은 선행 0을 인쇄하는 좋은 방법을 찾으려고합니다. 숫자는 1001로 저장되지만 좋은 방법은 무엇입니까?
나는 두 가지 경우 중 하나를 사용하여 숫자가 몇 자릿수인지 알아 내고 인쇄를 위해 여분의 0을 가진 char 배열로 변환하려고 생각했지만 도울 수는 없지만 사용할 수있는 방법이 있다고 생각합니다 나를 피하는 printf 형식 구문.
printf("%05d", zipCode);
는 0
당신이 패딩과 무엇을 나타냅니다 5
쇼에게 정수의 길이를. 예를 들어 "%02d"
(날짜에 유용함)을 사용 하면 1 열의 숫자에 대해 0 만 채 웁니다 (. 06
대신 6
). 예 2에서는 "%03d"
1 열의 1 숫자에 대해 2 0을 채우고 10의 열에 숫자 1을 채우십시오. 즉. (번호 7이 채워 007
지고 번호 17이가 채워짐 017
).
올바른 해결책은 우편 번호를 데이터베이스에 STRING으로 저장하는 것입니다. 숫자처럼 보일 수도 있지만 그렇지 않습니다. 각 부분마다 의미가있는 코드입니다.
숫자는 산술을하는 것입니다. 우편 번호는 그렇지 않습니다.
최소 필드 너비 앞에 0을 배치합니다.
printf("%05d",zipcode);
우편 번호는 고도로 지역화 된 필드이며 많은 국가에서 영국, 캐나다와 같은 우편 번호에 문자가 있습니다. 따라서이 예에서는 문자열 / varchar 필드를 사용하여 다른 국가에서 배송하거나 사용자 / 고객 / 고객 / 등을 확보 할 경우 저장해야합니다.
그러나 일반적인 경우 권장 답변 ( printf("%05d", number);
)을 사용해야합니다 .
* NIX 시스템을 사용중인 경우 :
man 3 printf
다음과 유사한 매뉴얼 페이지가 표시됩니다.
0 값을 0으로 채워야합니다. d, i, o, u, x, X, a, A, e, E, f, F, g 및 G 변환의 경우 변환 된 값은 공백이 아니라 왼쪽에 채워집니다. 0과-플래그가 모두 나타나면 0 플래그는 무시됩니다. 숫자 변환 (d, i, o, u, x 및 X)으로 정밀도를 지정하면 0 플래그가 무시됩니다. 다른 변환의 경우 동작이 정의되지 않습니다.
C에 대한 질문이지만 이 페이지가 도움 이 될 수 있습니다.
sprintf(mystring, "%05d", myInt);
여기서 "05"는 "앞에 0이있는 5 자리 숫자를 사용합니다"라고 말합니다.
printf는 다양한 포맷 옵션을 허용합니다.
전의:
printf("leading zeros %05d", 123);
우편 번호를 숫자가 아닌 문자열로 저장하면 문제가 발생할 수 있습니다 (장기).
더 유연합니다. 다음은 고정 너비와 공백으로 채워진 오른쪽 정렬 된 숫자의 행을 인쇄하는 예입니다.
//---- Header
std::string getFmt ( int wid, long val )
{
char buf[64];
sprintf ( buf, "% *ld", wid, val );
return buf;
}
#define FMT (getFmt(8,x).c_str())
//---- Put to use
printf ( " COUNT USED FREE\n" );
printf ( "A: %s %s %s\n", FMT(C[0]), FMT(U[0]), FMT(F[0]) );
printf ( "B: %s %s %s\n", FMT(C[1]), FMT(U[1]), FMT(F[1]) );
printf ( "C: %s %s %s\n", FMT(C[2]), FMT(U[2]), FMT(F[2]) );
//-------- Output
COUNT USED FREE
A: 354 148523 3283
B: 54138259 12392759 200391
C: 91239 3281 61423
함수와 매크로는 printfs를 더 읽기 쉽도록 설계되었습니다.
우편 번호를 문자 배열 zipcode []에 저장해야하는 경우 다음을 사용할 수 있습니다.
snprintf( zipcode, 6, "%05.5d", atoi(zipcode));
참고 URL : https://stackoverflow.com/questions/153890/printing-leading-0s-in-c
'Programing' 카테고리의 다른 글
jQuery-즉시 숨겨진 양식 요소 만들기 (0) | 2020.03.09 |
---|---|
jQuery를 사용하여 HTML 요소가 비어 있는지 어떻게 확인합니까? (0) | 2020.03.09 |
Java에서 finalize () 메소드는 언제 호출됩니까? (0) | 2020.03.09 |
Windows 명령 프롬프트의 별명 (0) | 2020.03.09 |
IntelliJ는 프로젝트 폴더를 표시하지 않습니다 (0) | 2020.03.09 |