C에서 0을 선두로 하는 인쇄
리딩 리딩의 0
「」, 「」등입니다.01001
를 참조해 주세요.번호는 다음과 같이 저장됩니다.1001
했습니다.case
또는 「」를 참조해 주세요.if
로 char
의 ""를 0
이지만, 는 이 수 있다는 수 없어요, 는만, 이고, 고고고, 고고고고고 고고 고고 고고 고고 고고 고 ' ' ' the ' the ' the ' the ' the the the the the 。printf
포맷 구문에서 제외됩니다.
printf("%05d", zipCode);
0
및 ""를 .5
에 정수값의 폭을 나타냅니다.
1: "1"을 사용하는 : " " ""%02d"
(날짜에 대해서는 생략 가능)1 컬럼의 숫자에 대해서만0을 채웁니다.예.,06
6
.
2: § 2:"%03d"
는, 을, 10열의 1개의 0을 패드 .를 들어은 「7」에 .007
패딩으로 17번 패딩하여 17번 .017
.
올바른 해결책은 데이터베이스에 ZIP 코드를 STRING으로 저장하는 것입니다. 숫자처럼 보일 수도 있지만 그렇지 않습니다.이건 코드야 각 부분이 의미를 갖는 곳이지
숫자는 산수를 하는 것입니다.우편번호는 그게 아니에요.
선두에 0을 붙여 번호를 출력하는 방법에는, 다음의 2가지가 있습니다.
「 」의 0
다음 중 하나:
int zipcode = 123;
printf("%05d\n", zipcode); // Outputs 00123
정밀도 지정자 사용:
int zipcode = 123;
printf("%.5d\n", zipcode); // Outputs 00123
이러한 차이는 음수 처리입니다.
printf("%05d\n", -123); // Outputs -0123 (pad to 5 characters)
printf("%.5d\n", -123); // Outputs -00123 (pad to 5 digits)
우편번호는 음수일 가능성이 낮기 때문에 상관없습니다.
단, ZIP 코드는 실제로는 문자와 대시를 포함할 수 있으므로 문자열로 저장해야 합니다.문자열에 선두에 0을 추가하는 것은 간단하므로 문제를 훨씬 쉽게 해결할 수 있습니다.
두 " " " 입니다.5
은 '어느 정도'로 할 수 .int
★★★★
int width = 5;
printf("%0*d\n", width, 123); // Outputs 00123
printf("%.*d\n", width, 123); // Outputs 00123
할 더 . 입니다.0
에 의해 값 하지 않습니다.0
:
printf("|%0d|%0d|\n", 0, 1); // Outputs |0|1|
printf("|%.0d|%.0d|\n", 0, 1); // Outputs ||1|
최소 필드 폭 앞에 0을 배치합니다.
printf("%05d", zipcode);
sprintf(mystring, "%05d", myInt);
여기서 "05"는 "앞에 0이 있는 5자리 숫자 사용"을 나타냅니다.
*nix 머신에 있는 경우:
man 3 printf
다음과 같은 수동 페이지가 표시됩니다.
0 값은 0으로 패딩해야 합니다.d, i, o, u, x, X, a, A, e, E, f, F, g 및 G 변환의 경우 변환된 값은 공백이 아닌 0으로 왼쪽에 채워집니다.0 및 - 플래그가 모두 표시될 경우 0 플래그는 무시됩니다.숫자 변환(d, i, o, u, x 및 X)으로 정밀도가 지정되면 0 플래그는 무시됩니다.다른 변환의 경우 동작은 정의되지 않습니다.
C에 대한 질문이지만 이 페이지는 도움이 될 수 있습니다.
우편번호는 매우 현지화된 필드이며, 영국, 캐나다 등 많은 국가에서 우편번호에 문자가 포함되어 있습니다.따라서 이 예에서는 string / varchar 필드를 사용하여 언제든지 다른 국가에서 사용자, 고객, 클라이언트 등을 발송하거나 가져올 경우 저장해야 합니다.
단, 일반적인 경우 권장되는 답변을 사용해야 합니다.printf("%05d", number);
).
printf에서는 다양한 포맷 옵션을 사용할 수 있습니다.
예:
printf("leading zeros %05d", 123);
ZIP 코드를 숫자가 아닌 문자열로 저장하면 번거로움(장기)을 덜 수 있습니다.
유연성이 향상되었습니다.다음은 고정된 너비와 공간 패딩으로 정렬된 숫자의 행을 인쇄하는 예입니다.
//---- 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 가 읽기 쉽도록 설계되어 있습니다.
문자 배열에 ZIP 번호를 저장해야 하는 경우zipcode[]
, 다음을 사용할 수 있습니다.
snprintf(zipcode, 6, "%05.5d", atoi(zipcode));
언급URL : https://stackoverflow.com/questions/153890/printing-leading-0s-in-c
'programing' 카테고리의 다른 글
예외는 catch and finally 절에 던져집니다. (0) | 2022.08.30 |
---|---|
스택 트레이스를 인쇄하기 위해 내부 프로그램에서 gdb를 호출하는 가장 좋은 방법? (0) | 2022.08.29 |
size_t의 올바른 printf 형식 지정자: %zu 또는 %Iu? (0) | 2022.08.29 |
타이프스크립트:VueX 스토어 모듈을 참조하면 VueJs 2.5에 대한 네임스페이스 오류가 표시됨 (0) | 2022.08.29 |
농담으로 vue 합성 함수를 조롱하는 방법 (0) | 2022.08.29 |