C Как разобрать int и char в массиве char?

Я хочу проанализировать 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;

Используйте одинарные кавычки, чтобы у вас был char, а не char*, который можно использовать в сравнениях с int, поэтому измените bool isValid(char piece[1]) на bool isValid(char *piece), затем одинарные кавычки piece[0] != 'a' и так далее.

Jack 25.12.2020 00:10

@Hilal Turfullu Что проверяет функция?

Vlad from Moscow 25.12.2020 00:22

@VladfromMoscow проверяет, есть ли ввод из столбца/строки доски. На доске есть столбцы с 1 по 7 и строки от a до g.

LunaAquila 25.12.2020 11:07
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
3
3
233
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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') решил мою проблему. Спасибо!

LunaAquila 25.12.2020 11:17

Другие вопросы по теме