Путаница с использованием strcmp () для числовых строк - PullRequest
0 голосов
/ 01 мая 2020
{
    char array[2][10]={"3234","5"};
    int n=strcmp(array+0,array+1);
    printf("%d",n);

}
  • Следующий код печатает -1, событие 3234> 5.
  • Однако печатается 1, если первое число 5234 или 6234 et c.
  • Что такое логика c за результатами? (Учитываются только первые цифры?)

  • Итак, есть ли способ сравнить два число строк без сопоставления их фактических целочисленных значений?

1 Ответ

1 голос
/ 01 мая 2020

Что такое логика c за результатами?

strcmp сравнивает символы в строках, используя их значения как unsigned char. Во-первых, он сравнивает первый символ одной строки с первым символом другой. Если они отличаются, он сообщает, что первая строка «меньше» второй, если его символ меньше, чем другой, и сообщает «больше чем», если символ первой строки больше. Если символы равны, то strcmp сравнивает вторые символы строк, затем третий и так далее. (Если одна строка короче другой, но идентична до конца, нулевой символ, заканчивающий ее, приведет к тому, что она будет меньше другой строки.)

Итак, есть ли способ сравнить две строки чисел без сопоставления их фактических целочисленных значений?

Для этого не существует стандартной библиотечной процедуры. Вы могли бы написать рутину для этого.

...