Операторы сравнения для строк C - PullRequest
5 голосов
/ 17 января 2012

У меня возникли трудности с поиском информации о сравнении строк C. Я понимаю, что в отличие от C ++, C не поддерживает перегрузку операторов, поэтому мне интересно, есть ли способ проверить, больше или меньше одна строка (например, str1> str2)?

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

Ответы [ 2 ]

14 голосов
/ 17 января 2012

Существует несколько, каждая из которых служит разным целям (пока не используются варианты с широкими символами).

strcmp - сравнивает две строки, символ за символом (с понятием C, чтоСтроки равны или нет - это не должно совпадать с тем, как люди думают - см. strcoll).Существует вариант сравнения только первых не более n символов, strncmp.

strcasecmp - сравнение двух строк без учета регистра.Существует вариант сравнения только первых не более n символов, strncasecmp.

strcoll - сравнивает две строки, наблюдая текущую установленную локаль (котораяВот почему это называется сопоставление, а не сравнение в этом случае).Если вы хотите, чтобы ss и ß сравнивались равными для немецкой аудитории, то это то, что вы должны использовать.


Где вы могли бы написать

if (string1 > string2) ...

вязыком, вы должны написать

if (strmp(string1, string2) > 0) ...

на C. По сути, вы перемещаете оба операнда в вызов функции, сохраняете оператор сравнения и сравниваете вместо него 0.

2 голосов
/ 17 января 2012

Используйте strcmp () в C.

, например, если вы хотите сравнить две строки s1 и s2, тогда

strcmp (s1, s2) вернет 0, если они равны,положительное целое, если s1 больше s2, и отрицательное целое, если s1 меньше s2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...