int to padded-zeroes string

时间:2012-01-23 22:15:35

标签: c string int type-conversion

我有一个需要与3个字符串进行比较的数字。 这个数字不会超过3位数。

因此,例如,我需要将3,300和13与'003''300'和'013'等字符串进行比较。

我认为最简单的比较方法是,如果我能将int整理成字符串格式,然后使用strcmp将'003'与'003'进行比较。

我只是不确定如何确定需要填充多少个字符,特别是如何正确分配和转换。

有什么建议吗?我以为我可以查看是否number - 100 < 0。如果是,则表示该数字需要填充而不仅仅是转换。我也可以number - 10 < 0查看是否有133这样的数字。所以我可以确定要填充的零的确切数量,但之后我就输了。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

  

我认为比较最简单的方法就是如果我可以获得整数   到他们的字符串格式,然后使用strcmp比较'003'到'003'

我认为最简单的方法是使用strtoul并将字符串转换为整数。

3 == strtoul("003", NULL, 10);

答案 1 :(得分:3)

出于约定的目的,我们将您要比较的数字(int) num和字符串(char *) str

您可以使用s(n)printf将数字转储到字符串缓冲区中,并比较生成的字符串:

char str2[16];
snprintf(str2, sizeof(str2), "%03d", num);
if (strcmp(str, str2) == 0) { ... }

将字符串转换为整数并将其比较可能更容易,但是:

if (num == atoi(str)) { ... }