Вопрос

Из профессионального любопытства, каков самый безопасный / самый быстрый / самый эффективный способ сравнить две полностью числовые строки в C?

родовое слово
Это было полезно?

Решение

На мой взгляд,

strcmp (), так как он не требует числовых преобразований. Но в этом случае вам нужно убедиться, что один из них хранит строку, содержащую только числовые символы.

Также вы можете создать код кода для строки

< sizesEDIT1

Как уже указывалось другими относительно начальных нулей, вы можете вручную просканировать начальные нули и вызвать memcmp () или strcmp (), передав указатель на первую ненулевую цифру.

< sizesEDIT2

Приведенный ниже код говорит о том, что я пытаюсь сказать. Это только для целых чисел, а не для чисел с плавающей запятой.

родовое слово

Для чисел с плавающей запятой конечные нули после десятичной запятой следует вырезать вручную.

Или сделайте все вручную.

< sizesEDIT4

Я также хотел бы, чтобы вы взглянули на этот код для чисел с плавающей запятой. Это обнаружит ведущие нули перед десятичным и конечные нули после десятичного разделителя. Например

memcmp () и 00000000000001.10000000000000 будут генерировать кодовый код для приведенного ниже кода

родовое слово

Перед использованием необходимо пройти тестирование.

Другие советы

str(n)cmp - самый быстрый и безопасный.

Если вы хотите, чтобы они были идентичными, strncmp будет самым быстрым и безопасным, поскольку он может выполнять прямое сравнение без каких-либо преобразований.Кроме того, он считается более безопасным, чем генерируемый код.

Однако, если вы хотите, чтобы strcmp и 00 были равны, или чтобы вы могли представлять одно и то же число немного по-разному, вам потребуется использовать 0.

На мой взгляд, "самым безопасным" способом было бы преобразовать оба аргумента в целые числа, а затем протестировать, так как таким образом вы избежите потенциальной проблемы с начальными нулями.Однако, вероятно, это не самый быстрый и не самый эффективный метод.

Вы можете просто использовать следующее:

if (strcmp ("123", "123")== 0)

{

родовое слово

}

еще

{

родовое слово

}

На мой взгляд, это должно сработать.

Я предлагаю такой способ для целых чисел:

родовое слово
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top