int в строку с дополненными нулями - PullRequest
2 голосов
/ 24 января 2012

У меня есть число, которое нужно сравнить с 3 символьными строками.Длина не должна превышать 3 цифры.

Так, например, мне нужно сравнить 3, 300 и 13 со строками, такими как «003», «300» и «013».

Я думаю, что самый простой способ сравнения был бы, если бы я мог получить целые числа в их строковом формате, а затем использовать strcmp для сравнения '003' с '003'.

Я просто не уверен, как определить, сколько символов нужно дополнить, и, в частности, как правильно назначать и преобразовывать.

Есть предложения?Я думал, что смогу проверить, если number - 100 < 0.Если это так, это означает, что число должно быть дополнено, а не просто преобразовано.Я также мог бы сделать number - 10 < 0, чтобы увидеть, является ли его число, например, 13 или 3.Так что я могу определить точное количество нулей к пэду, но я потерян после этого.

Спасибо за любую помощь!

Ответы [ 2 ]

3 голосов
/ 24 января 2012

Для удобства давайте назовем число, которое вы сравниваете, (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)) { ... }
3 голосов
/ 24 января 2012

Я думаю, что самый простой способ сравнения был бы, если бы я мог получить целые числа в их строковом формате, а затем использовать strcmp для сравнения '003' с '003'

Я думаю,было бы проще использовать strtoul и преобразовать строки в целые числа.

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