При обработке текстовой информации часто бывает необходимо сопоставить содержимое заданных символьных строк, выполнив операцию сравнения. Эта операция устанавливает отношение лексиграфического порядка для пары сравниваемых строк путем последовательного анализа кодов их символов на основе следующего формального правила. Пусть индексы i и j обозначают номера символов сопоставляемых строк V и W необязательно равной длины. Тогда строка V считается лексиграфически больше, чем строка W, если существует значение индекса j, при котором выполняются следующие соотношения:
V[j] > W[j] и V[i] == W[i],   для всех значений индексов i < j.
Лексиграфическое равенство строк символов означает, что они идентичны. Например, строка символов "Windows XP" лексиграфически больше, чем символьная строка "Windows NT", потому что для кодов их первых различных символов N и X имеет место отношение порядка 'X' > N'. По аналогичным причинам символьная строка "Windows 98", лексиграфически больше, чем строка символов "Windows 2000".
Для полного или частичного сравнения символьных строк предусмотрены функции strcmp и strncmp. Спецификации формата вызова этих функций имеют вид:
int strcmp (const char* str1, const char* str2);
int strncmp(const char* str1, const char* str2, unsigned num);
Обе функции выполняют лексиграфическое сравнение двух строк, адресуемых указателями str1 и str2, последовательно сопоставляя коды их символов. При этом число символов, которые анализирует функция strncmp ограничено значением параметра num. Это позволяет сравнивать начальные части двух строк или символьных массивов. Функция strcmp не имеет параметрических ограничений по диапазону сравнения. Ее следует использовать для полного сравнения заданных строк. Однако, обе функции прерывают сравнение, если достигнут символ с нулевым кодом в любой из адресуемых строк. Поэтому действие функции strncmp эквивалентно обращению к функции strcmp, когда значение параметра num превышает длину любой из сравниваемых символьных строк. Результат сравнения обе функции передают через код возврата. Его значение может быть больше или меньше 0 в зависимости от того, какая из адресованных строк лексиграфически больше, первая или вторая. Во многих реализациях ненулевой возврат равен разности кодов первых несовпадающих символов сравниваемых строк. Нулевой возврат всегда имеет место, когда сравниваемые строки символов идентичны.