По причинам, с которыми я полностью не согласен, но «Полномочия (анти-юзабилити), которые будут» продолжают утверждаться, несмотря на мои возражения, у меня есть процедура сортировки, в которой базовая функция strcmp () сравнивается для сортировки по ее имени.Это прекрасно работает;трудно ошибиться.Однако в 11-й час было решено, что записи, начинающиеся с цифры, должны следовать после записей, начинающихся с буквы, вопреки порядку ASCII.Они ссылаются на то, что в стандарте EBCDIC цифры следуют за буквами, поэтому предварительное предположение не является универсальной правдой, и я не имею возможности выиграть этот аргумент ... но я отвлекся.
В этом и заключается моя проблема.Я заменил все соответствующие ссылки на strcmp новым вызовом функции nonstd_strcmp, и теперь мне нужно реализовать изменения, чтобы выполнить изменение сортировки.Я использовал источник FreeBSD в качестве своей базы: http://freebsd.active -venture.com / FreeBSD-srctree / newsrc / libkern / strncmp.c.html
if (n == 0)
return (0);
do {
if (*s1 != *s2++)
return (*(const unsigned char *)s1 -
*(const unsigned char *)(s2 - 1));
if (*s1++ == 0)
break;
} while (--n != 0);
return (0);
Думаю, явозможно, потребуется некоторое время, чтобы по-настоящему подумать о том, как это сделать, но я уверен, что я не единственный, кто испытал умственную смерть от изменений спецификации перед выпуском.