memcmp vs strcmp

интернет компьютеры программирование си строки

Можно ли использовать
char *string;
memcmp(string, "Constant", 9);
вместо
char *string;
strcmp(string, "Constant);
?

Какие подводные камни?
Какие будут отличия в коде (вплоть до тактов)?


Примечание:
strcmp можно поменять на strncmp(...,..., 9).

Отличия интересуют в вызывающем коде, а не в коде вызываемых memcmp/strcmp (т.е. gcc -O0 -g -fno-builtin)

Примечание:
т.е. будет ли разница из-за того, что типы аргументов различны?
extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
и
extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)

Примечание:
Строка указана. Разница будет в самих функциях. Вопрос в том, точно ли не будет преобразования аргументов. man-ы читал.

Примечание:
исходники линукса почитываю примерно раз в неделю. а еще занимаюсь компиляторами и их проблемами :)

разве wchar_t это 4 байта?
Ответы:
Разница в том, что memcmp предназначена для бинарных данных, а strcmp для Си-строк. Грубо говоря Си-строки можно считать бинарными данными с одним НО! если n-ый байт равен 0, то он означает конец строки. Т.е. strcmp останавливается когда встречает его в одной из переданных строк. Поэтому если речь идет о Си-строках то использовать нужно str* функции!
> Вопрос в том, точно ли не будет преобразования аргументов.
Не будет.
Так боитесь читать исходники линукса? Они ж простые!
Здесь пример есть


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.