我有一个需要与3个字符串进行比较的数字。 这个数字不会超过3位数。
因此,例如,我需要将3,300和13与'003''300'和'013'等字符串进行比较。
我认为最简单的比较方法是,如果我能将int整理成字符串格式,然后使用strcmp将'003'与'003'进行比较。
我只是不确定如何确定需要填充多少个字符,特别是如何正确分配和转换。
有什么建议吗?我以为我可以查看是否number - 100 < 0
。如果是,则表示该数字需要填充而不仅仅是转换。我也可以number - 10 < 0
查看是否有13
或3
这样的数字。所以我可以确定要填充的零的确切数量,但之后我就输了。
感谢您的帮助!
答案 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)) { ... }