Сравнение строк.
Библиотека <cstring> предлагает пользователю готовые функции, выполняющие сравнение строк. Далее будут рассмотрены функции, выполняющие посимвольное сравнение двух строк и возвращающие разность кодов первых несовпадающих символов.
Функция strcmp.
Функция strcmp имеет прототип:
int strcmp(const char* str1, const char* str2);
- 0 , если str1 > str2
Эта функция производит сравнение, различая прописные и строчные буквы
char s1[]="Hello"; char s2[]="HeLlo"; int k=strcmp(s1,s2); coutВ результате, на экран будет выведено: 32. Т.к. код символа l = 108, а код символа L = 76. 108-76=32.
Функция stricmp.
Функция stricmp имеет тот же прототип как и функция strcmp. Отличие этих двух функций лишь в том, что stricmp не различает регистр символов. Т.е. для предыдущего примера на экран выведется 0.
Функция strncmp.
Имеет прототип:int strncmp(const char* str1, const char* str2, size_t num);Эта функция сравнивает num первых символов строк, на которые указывают указатели str1 и str2. Пример:
char s1[]="Hello"; char s2[]="HeLlo"; int k=strncmp(s1,s2,2); coutСравнение строк в языке C
@pavel char word[40]; scanf("%s", &word[i]); и char **rootie; *rootie = new char[counter2]; for (int i = 0; i > counter2; i++) < for (int j = 0; j >20; j++) < fscanf(roots, "%s", rootie); >> . Ошибку выдает для word.
30 апр 2016 в 14:00scanf("%s", &word[i]); эм. вы ТОЧНО знаете что делаете? fscanf(roots, "%s", rootie); не представляю как оно компилируется.
30 апр 2016 в 14:06*rootie = new char[counter2]; - я не уверен что именно это вы и хотели. Может rootie = new char* [counter2]; ? В общем советую весь код сюда выложить и внимательно посмотреть на типы данных (char char * и char **).
Как сравнивать строки в си
#include
int strcasecmp(const char *s1, const char *s2);
int strncasecmp(const char *s1, const char *s2, size_t n);ОПИСАНИЕ
Функция strcasecmp() выполняет побайтовое сравнение строк s1 и s2, игнорируя регистр символов. Она возвращает целое число, которое меньше, больше нуля или равно ему, если выяснится, что s1 меньше, равна или больше s2 соответственно. Функция strncasecmp() работает аналогичным образом, но сравниваются только первые n байт строки s1.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функции strcasecmp() и strncasecmp() возвращают целое число, которое меньше, больше нуля или равно ему, если строка s1 (или её первые n байтов) соответственно меньше, больше или равна s2.
АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение |
strcasecmp(), strncasecmp() | безвредность в нитях | безвредно (MT-Safe locale) |
СООТВЕТСТВИЕ СТАНДАРТАМ
4.4BSD, POSIX.1-2001, POSIX.1-2008.ЗАМЕЧАНИЯ
Впервые, функции strcasecmp() и strncasecmp() появились в 4.4BSD, где они объявлялись в . Из-за этого, по причине исторической совместимости, в заголовочном файле glibc также объявлены эти функции, если определён макрос тестирования свойств _DEFAULT_SOURCE (или, в glibc 2.19 и старее, _BSD_SOURCE). В стандарте POSIX.1-2008 об этих функциях сказано: Если используется категория локали LC_CTYPE из локали POSIX, то эти функции должны работать как если бы строки были преобразованы к нижнему регистру и проводилось побайтовое сравнение. В противном случае результаты не определёны.
Как сравнить две строки на языке программирования C
wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 23 человек(а).
Количество просмотров этой статьи: 31 074.
В программных кодах, написанных на языке С, довольно часто сравниваются длины строк, чтобы выяснить, какая строка содержит больше символов. Это пригодится для сортировки данных. Для сравнения строк необходима специальная функция — не используйте != или == .
- strcmp () — эта функция сравнивает две строки и возвращает разницу в количестве символов.
- strncmp () — эта функция аналогична функции strcmp () за исключением того, что сравниваются первые n символов. Она считается более безопасной, поскольку позволяет избежать сбоев из-за переполнений.
Начните программу с необходимых библиотек. Вам понадобятся библиотеки и , а также любые другие библиотеки, необходимые для вашей конкретной программы.
#include #include int main () >
Определите две строки, которые хотите сравнить. В нашем примере сравним две строки с типом char . Также определите возвращаемое значение как целое число. [1] X Источник информации
#include #include int main () char *str1 = "яблоко"; char *str2 = "апельсин"; int ret; >
Введите функцию сравнения. В нашем примере воспользуемся функцией strncmp () . В ней нужно задать количество измеряемых символов.
#include #include int main () char *str1 = "яблоко"; char *str2 = "апельсин"; int ret; ret = strncmp(str1, str2, 8); /*Сравниваются две строки, длина которых не превышает 8 символов */ >
Введите условный оператор If . Else. Он необходим, чтобы показать, какая строка длиннее. Функция strncmp () вернет число 0 , если длины строк одинаковые, положительное число, если str1 длиннее, и отрицательное число, если str2 длиннее.
#include #include int main () char *str1 = "яблоко"; char *str2 = "апельсин"; int ret; ret = strncmp(str1, str2, 8); if(ret > 0) printf("str1 длиннее"); > else if(ret 0) printf("str2 длиннее"); > else printf("Длины строк равны"); > return(0); >