Вы не можете сравнить содержимое строк (или любой другой тип массива) со стандартными реляционными операторами как ==
, <
, >
и т.д. Вам нужно будет использовать функцию strcmp
библиотеки вместо :
#include <string.h>
...
if (strcmp(TextA, word) == 0)
{
// strings are equal
}
strcmp
будет возвращать целое значение 0, если < TextA
является lexicogra физически меньше word
, 0, если они лексикографически равны, и> 0, если TextA
лексикографически больше word
.
Обратите внимание, что в локали C это означает, что строки будут упорядочены «ASCIIbetically»; то есть любая строка, начинающаяся с 'a'
, появится после строки, начинающейся с 'Z'
, поскольку код ASCII для 'a'
больше 'Z'
.
Почему вы не можете использовать ==
для сравнения строк?
исключения случаев, когда это операнд sizeof
, _Alignof
или одинарных &
операторов, или является строкой символов используются для инициализации массива в объявлении, выражение типа «N-элементе массив T
» будет преобразуется в выражение типа «указатель на T
», а его значение будет адресом первого элемента массива.
Это означает, что в условии TextA == word
оба выражения TextA
и word
преобразуются в значения указателя; вместо сравнения содержимого двух массивов мы сравниваем их адреса.
Функция strcmp() – Arpit
Спасибо, все работает. – user2055216