在 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");
}
}
}
我正在做一个项目,我希望我的程序读取一个严格的 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");
}
}
}