在 C 中打印数字中的前导零

Printing leading zeros in a number in C

我正在做一个项目,我希望我的程序读取一个严格的 5 位数字,前导零。

如何打印包含前导零的数字?
另外:我怎样才能让我的程序读取 5 位数字,包括零作为前导数字?

我假设您想读入 int 变量。如果是这样,您可以尝试以下解决方案。

#include<stdio.h>
void main()
{
  int a;

  scanf("%5d", &a);
  printf("%05d",a);

}

将 printf 系列与“%05d”一起使用以打印带前导零的数字。使用 sscanf 读取此值(忽略前导零)。

参考以下代码:

int a = 25;
int b;
char buffer[6];
sprintf( buffer, "%05d", a );
printf( "buffer is <%s>\n", buffer );
sscanf( buffer, "%d", &b );
printf( "b is %d\n", b );

输出为:

缓冲区为 <00025>

b 是 25

控制输入的最佳方法是读入一个字符串,然后 parse/analyze 根据需要读取该字符串。例如,如果 "exactly five digits" 表示:"exactly 5 digits (not less, not more), no other leading characters other than '0', and no negative numbers",那么您可以使用函数 strtol,它会告诉您数字解析在何处结束。由此,您可以得出输入实际有多少位:

#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>

int main() {

    char line[50];
    if (fgets(line,50,stdin)) {
        if (isdigit((unsigned char)line[0])) {
            char* endptr = line;
            long number = strtol(line, &endptr, 10);
            int nrOfDigitsRead = (int)(endptr - line);
            if (nrOfDigitsRead != 5) {
                printf ("invalid number of digits, i.e. %d digits (but should be 5).\n", nrOfDigitsRead);
            } else {
                printf("number: %05lu\n", number);
            }
        }
        else {
            printf ("input does not start with a digit.\n");
        }
    }
}