如何在C中存储以0开头的数字

时间:2011-11-25 13:01:35

标签: c

我只是想id问这个问题,看它是否真的可以完成。

如果我想存储像“00000000000001”这样的数字,最好的方法是什么? 请记住,这也必须定期增加。

我想要有一种方法可以使用整数来执行此操作,或者我必须转换为沿线某处的char数组。这样会很好,但尝试增加一个字符串会很痛苦。

4 个答案:

答案 0 :(得分:8)

我会将它存储为整数,并且只在需要生成输出时才转换为带有前导零的格式化版本,例如使用printfsprintf等。

这比存储字符串并尝试对字符串执行算术要容易得多。尤其是因为您对字符串有额外的格式要求。

如果出于某种原因,存储整数很难,因为您的主数据会这样做。

  1. 将字符串存储为主数据。
  2. 每当您需要执行算术时,请将字符串转换为整数。
  3. 算术完成后,转换回字符串并存储。

答案 1 :(得分:7)

您只需使用适当的类型(例如unsigned int)存储数字,这样就可以轻松执行“递增1”等操作 - 只需要担心显示数字时前导零。

sprintf实际上可以为您做到这一点:

unsigned int i = 1;
char buffer[64];
sprintf( buf, "%014u", i );

这会打印'00000000000001'。

答案 2 :(得分:1)

您可以将其存储在整数变量中(前提是存在一个足以满足您需求的整数类型)。打印时,只需将数字格式化为具有正确的前导零数。

答案 3 :(得分:0)

#include <stdlib.h> // for itoa() call
#include <stdio.h>  // for printf() call

int main() {
    int num = 123;
    char buf[5];

    // convert 123 to string [buf]
    itoa(num, buf, 10);

    // print our string
    printf("%s\n", buf);

    return 0;
}