在C中保持前导零

时间:2013-06-20 05:19:30

标签: c

我试图在c中打印一个整数但是以零开头的那些导致我的问题。 例如,如果没有。是01234它打印像1234而不是01234.请告诉如何在C

中进行

我的问题是有2个整数,我想知道第一个整数是否在第二个的开头。

代表 123和
12345“是”因为123(第一个整数)位于第二个整数(12345)的开头

但是以防万一 123和
012345 它应该打印“no”因为123不在0123345的beginnig中但在c尾随零被删除而我的程序正在打印“是”

请告诉我们该做什么(注意 - 数字的数字可以在整数范围内变化,第二个整数等于或大于第一个整数)

3 个答案:

答案 0 :(得分:4)

int i = 1234;
printf("%08d", i);   // zero-pad to 8 places.

答案 1 :(得分:1)

我的建议是,如果您从用户那里获取STDIN的值。 然后,如果要将该值用于打印目的,则需要将带有前导零的整数存储到字符串而不是整数中。因为如果将该字符串值存储在整数中,则前导零没有意义。

所以printf中的%s保留用户以这种方式进入的零数。

答案 2 :(得分:0)

#include <stdio.h>
#include <string.h>

#define N_DIGITS 64

main()
{
    char a[N_DIGITS], b[N_DIGITS];
    scanf("%s%s", a, b);
    if(strncmp(a, b, strlen(a))==0)
        puts("yes");
    else
        puts("no");
    return 0;
}

请注意,数字的长度受值N_DIGITS的限制。 结果如下;

$ ./a.out <<<"123 12345"
yes
$ ./a.out <<<"123 012345"
no