如何解析字符数组中的整数和字符? (C语言)

3

我想在我的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;

2
使用单引号,这样你就有一个 char 而不是 char*,可以与 int 进行比较,因此将 bool isValid(char piece[1]) 更改为 bool isValid(char *piece),然后用单引号 'piece[0] != 'a' 等等。 - Jack
@Hilal Turfullu 这个函数检查什么? - Vlad from Moscow
@VladfromMoscow 检查输入是否超出了棋盘列/行范围。该棋盘有1到7列和a到g行。 - LunaAquila
2个回答

1
字符字面值用单引号(')而非双引号(")表示,因此您应该检查 piece[0] != 'a' 等等。

1

对于像这样的表达式的初学者

(piece[0] != "a")

左操作数的类型为char,而右操作数的类型为char *,因为"a"是一个字符串字面值。看起来您要比较两个字符。因此,不要使用字符串字面值,而应该使用字符常量。
(piece[0] != 'a')

其次,if语句中的条件。
if((piece[0] != 'a') || (piece[0] != 'b') || and so on...

是不正确的。您需要使用逻辑 AND 运算符而不是逻辑 OR 运算符,例如

if((piece[0] != 'a') && (piece[0] != 'b') && and so on...

在if语句中使用&&的效果因情况而异。&&不能给我想要的结果。但是(piece[0] != 'a')解决了我的问题。谢谢! - LunaAquila

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接