在C中保持前导零[重复]

Posted

技术标签:

【中文标题】在C中保持前导零[重复]【英文标题】:keeping leading zeros in C [duplicate] 【发布时间】:2013-06-20 05:19:30 【问题描述】:

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

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

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

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

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

【问题讨论】:

您的标题具有误导性。它应该像“比较前面的零的数字”。 如果您将数字作为字符串处理,您会做得更好。 【参考方案1】:
int i = 1234;
printf("%08d", i);   // zero-pad to 8 places.
printfdocumentation Working example

【讨论】:

我只想保留用户没有输入的 0,最多 8 个地方 你不能。将数字读入整数后,前导零(没有意义)就消失了。整数只存储数字。如果还有其他问题,那么您应该显示您正在使用的代码。 响应速度+1 :) 我想 52 秒还不错:-) @himanshu 听起来你应该把你的号码读成一个字符串。【参考方案2】:

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

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

【讨论】:

【参考方案3】:
#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

【讨论】:

以上是关于在C中保持前导零[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在熊猫列后期操作中保持前导零?

使用 Pandas 读取 CSV 时如何在列中保持前导零?

PHP在数字中添加千位分隔符并保持前导零

将 int 存储到 SQL,但保持前导零

在 Java 中,如何将字节数组转换为十六进制数字字符串,同时保持前导零? [复制]

在 Java 中,如何将字节数组转换为十六进制数字字符串,同时保持前导零? [复制]