gpt4 book ai didi

c 如何检查数组的第一个字符

转载 作者:太空宇宙 更新时间:2023-11-04 00:16:08 25 4
gpt4 key购买 nike

我正在尝试通过串行控制台接收 10 个字符,并将它们添加到一个名为 buffer 的数组中。第一个字符必须是“L”或“S”,接下来的字符必须是“1”或“0”。

代码成功通过了第一个 if 语句。但是 if((buffer[0] != 'L') || (buffer[0] != 'S')) 行似乎不起作用,即使我输入 'L'或'S'。

使用 buffer[0] != 符号有什么问题吗?

int main(void)
{
char ch;
char buffer[10] = "";

putstring("Enter 9 characters beginning with 'L' or 'S' and 8 digits\r\n");

for (int i = 0; i < 9; i++) {

ch = getcharacter();

if ((ch == '0') || (ch == '1') || (ch == 'L') || (ch == 'S')) {

buffer[i] = ch;
//check first character
if((buffer[0] != 'L') || (buffer[0] != 'S')) {

printf("First letter must be L or S\r\n");
goto error;
}
error:
return -1;
}
}
}

int getcharacter(void) {

char c = 0;
const uint32_t recieve_ready = 1 << 7;

//disable interrupt for a read ready
*uart_control_reg = 0;

while (1) {
//check if RRDY bit is set
if ((*uart_status_reg) & recieve_ready) {
c = *uart_rxdata_reg;
break;
}
}
return ((char) c);

最佳答案

if((buffer[0] != 'L') || (buffer[0] != 'S'))

错了,你需要

if((buffer[0] != 'L') && (buffer[0] != 'S'))

if (!(buffer[0] == 'L' || buffer[0] == 'S'))

您的原始代码是“如果 char 不是 L 或 char 不是 S”,这始终是正确的。如果 char 是 L,则第二部分为真,使整个 if 语句为真。

刚注意到上面 Chris Turner 的评论。 return -1 总是被执行,移动它来替换 goto error 的行。

关于c 如何检查数组的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42767485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com