在C中打印数字中的前导零
我正在做一个项目,我想让我的程序读取一个严格的5位数,前导为零 如何打印包含前导零的数字?在C中打印数字中的前导零,c,numbers,digit,leading-zero,C,Numbers,Digit,Leading Zero,我正在做一个项目,我想让我的程序读取一个严格的5位数,前导为零 如何打印包含前导零的数字? 加号:我如何保证我的程序读取5位数字,包括一个零作为前导数?我假设您要读取int变量。如果是这样,您可以尝试以下解决方案 #include<stdio.h> void main() { int a; scanf("%5d", &a); printf("%05d",a); } #包括 void main() { INTA; scanf(“%5d”和&a); printf
加号:我如何保证我的程序读取5位数字,包括一个零作为前导数?我假设您要读取
int
变量。如果是这样,您可以尝试以下解决方案
#include<stdio.h>
void main()
{
int a;
scanf("%5d", &a);
printf("%05d",a);
}
#包括
void main()
{
INTA;
scanf(“%5d”和&a);
printf(“%05d”,a);
}
使用带“%05d”的printf系列打印带前导零的数字。使用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 );
inta=25;
int b;
字符缓冲区[6];
sprintf(缓冲区,“%05d”,a);
printf(“缓冲区是\n”,缓冲区);
sscanf(缓冲区、%d、&b);
printf(“b是%d\n”,b);
输出为:
缓冲区是
b是25控制输入的最佳方法是读入字符串,然后根据需要解析/分析字符串。例如,如果“正好五位数”的意思是:“正好五位数(不少于,不多于),除“0”之外没有其他前导字符,也没有负数,然后您可以使用函数
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");
}
}
}
#包括
#包括
#包括
int main(){
字符行[50];
if(fgets(第50行标准){
if(isdigit((无符号字符)行[0])){
char*endptr=行;
长编号=strtol(第行和第行,10);
int nrOfDigitsRead=(int)(endptr-行);
如果(nrOfDigitsRead!=5){
printf(“无效位数,即%d位(但应为5)。\n”,nrOfDigitsRead);
}否则{
printf(“编号:%05lu\n”,编号);
}
}
否则{
printf(“输入不以数字开头。\n”);
}
}
}
向我们展示一些代码您希望如何在程序中输入数字?控制台还是通过文件?给我们你的程序的上下文。数字是什么类型的?整数?你能不能不把它当作一个字符串来读,然后验证/编号?你已经问了三个问题(第一个暗示)。请不要像在教程中那样问几个问题。如果在scanf
中使用格式说明符%d
,则忽略前导零。如果您使用格式说明符%i
,则前导零表示八进制值。如果您希望输入5位数字,则使用字符串类型输入。关于“有前导零”的问题也不清楚,是否总是有前导零?请发布示例输入和所需输出。这将接受输入上的1到5位数字(加上一个符号)。假设数字不是负数,它将打印前导零的值。非常感谢你。