0

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

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

对于 ex- 123 和
12345 “是”,因为 123(第一个整数)在第二个整数的开头(12345)

但在 123 和
012345 的情况下,它应该打印“否”,因为 123 不是在 0123345 的开头,而是在 c 中的尾随零被删除,我的程序正在打印“是”

请告诉该怎么做(注意数字的整数范围可能不同,第二个整数等于或大于第一个整数)

4

3 回答 3

4
int i = 1234;
printf("%08d", i);   // zero-pad to 8 places.
于 2013-06-20T05:20:22.600 回答
1

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

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

于 2013-06-20T05:34:48.473 回答
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;
}

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

$ ./a.out <<<"123 12345"
yes
$ ./a.out <<<"123 012345"
no
于 2013-06-20T05:45:20.223 回答