Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中打印数字中的前导零_C_Numbers_Digit_Leading Zero - Fatal编程技术网

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

在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位数,前导为零

如何打印包含前导零的数字?

加号:我如何保证我的程序读取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位数字(加上一个符号)。假设数字不是负数,它将打印前导零的值。非常感谢你。