Я хочу проанализировать char и int в моем массиве char и использовать их в коде. Например, массив символов равен a3. Я получаю предупреждение: «сравнение между указателем и целым числом».
Как я могу это исправить?
bool isValid(char piece[1]){
if ((piece[0] != "a") || (piece[0] != "b") || (piece[0] != "c") || (piece[0] != "d") || (piece[0] != "e") || (piece[0] != "f") || (piece[0] != "g") || (piece[1] <= 0) || (piece[1] > 7))
return false;
else
return true;
@Hilal Turfullu Что проверяет функция?
@VladfromMoscow проверяет, есть ли ввод из столбца/строки доски. На доске есть столбцы с 1 по 7 и строки от a до g.



char литералы обозначаются одинарными кавычками ('), а не двойными кавычками ("), поэтому вам следует проверить piece[0] != 'a' и т. д.
Для начала в таких выражениях
(piece[0] != "a")
левый операнд имеет тип char, а правый операнд имеет тип char *, потому что "a" является строковым литералом. Кажется, вы собираетесь сравнивать двух персонажей. Поэтому вместо строковых литералов используйте символьные константы, например
(piece[0] != 'a')
Во-вторых, условие в операторе if
if ((piece[0] != 'a') || (piece[0] != 'b') || and so on...
это неверно. Вам нужно использовать логический оператор И вместо логического оператора ИЛИ, например
if ((piece[0] != 'a') && (piece[0] != 'b') && and so on...
Используйте &&, если оператор отличается от ситуации к ситуации. && не может дать мне то, что я хочу. Но (piece[0] != 'a') решил мою проблему. Спасибо!
Используйте одинарные кавычки, чтобы у вас был char, а не char*, который можно использовать в сравнениях с int, поэтому измените
bool isValid(char piece[1])наbool isValid(char *piece), затем одинарные кавычкиpiece[0] != 'a'и так далее.