K & R - Числовой вид букв? - PullRequest
3 голосов
/ 18 мая 2011

Что означает числовая сортировка буквенных символов в противоположность лексикографическим, как в K & R 5-14 с параметром -n

Ответы [ 2 ]

4 голосов
/ 18 мая 2011

Это означает, что строка должна рассматриваться как одно числовое значение, а не как последовательность символов, которые оказываются числовыми.K & R показывает вам функцию numcmp для использования чуть выше упражнения 5-14.Он преобразует char* аргументы в double и сравнивает их численно, вместо сравнения строк по одному символу за раз.Таким образом, строка 103 сортируется после строки 23, поскольку 103 больше 23. По сравнению со строками, 103 будет сортировать вперед из 23, потому чтокод символа для 1 меньше, чем код символа для 2.

0 голосов
/ 18 мая 2011

Во втором издании K & R, раздел 5.11, функция сравнения

int numcmp(char *s1, char *s2); /* defined on page 121 */

используется для числовой сортировки (в отличие от использования strcmp для лексикографической сортировки).numcmp вызывает функцию

double atof(char s[]); /* defined on page 71 */

, которая преобразует строку в эквивалент с плавающей запятой двойной точности.

В этом примере сортировка с помощью командной строки -nаргумент делается значениями double, возвращаемыми функцией atof.

...