C中字符数组中字符的简单检查

C中字符数组中字符的简单检查,c,C,我是C新手。这段代码在Flyport模块上运行,在他们自己的IDE上编译,但我认为我的错误应该很容易被熟悉C的人发现 我无法编译这段代码,尽管几乎改变了一切,我做错了什么 char string_serial[50]="starting Value"; if (string_serial[0] = "*") { UARTWrite(2,"First Char OK"); UARTWrite(2,"\r\n");

我是C新手。这段代码在Flyport模块上运行,在他们自己的IDE上编译,但我认为我的错误应该很容易被熟悉C的人发现

我无法编译这段代码,尽管几乎改变了一切,我做错了什么

char string_serial[50]="starting Value";    

if (string_serial[0] = "*")
        {   

            UARTWrite(2,"First Char OK");
            UARTWrite(2,"\r\n");

            else 

            UARTWrite(2,"First Char NOT OK");
            UARTWrite(2,"\r\n");

        }
如果不明显,我将尝试检查数组中的字符0是否为*


谢谢

您应该将*周围的双引号替换为单引号,并使用==:

单引号中的单个字符表示字符;用双引号括起来的单个字符表示一个字符的C字符串


单一=意味着分配;双引号==表示比较。

您应该用*周围的单引号替换双引号,并使用==:

单引号中的单个字符表示字符;用双引号括起来的单个字符表示一个字符的C字符串


单一=意味着分配;double==表示比较。

if/else条件的语法错误

语法应该是

 if(condition)
  {
  }

  else
  {
  }
if (string_serial[0] == '*')
        {   

            UARTWrite(2,"First Char OK");
            UARTWrite(2,"\r\n");
         }

else 
        {
            UARTWrite(2,"First Char NOT OK");
            UARTWrite(2,"\r\n");

        }
对于您的特定代码,它应该是

 if(condition)
  {
  }

  else
  {
  }
if (string_serial[0] == '*')
        {   

            UARTWrite(2,"First Char OK");
            UARTWrite(2,"\r\n");
         }

else 
        {
            UARTWrite(2,"First Char NOT OK");
            UARTWrite(2,"\r\n");

        }
=运算符为赋值,成功时赋值返回true。您需要的是==用于比较


如上面代码所示,字符也使用单引号。

if/else条件的语法错误

语法应该是

 if(condition)
  {
  }

  else
  {
  }
if (string_serial[0] == '*')
        {   

            UARTWrite(2,"First Char OK");
            UARTWrite(2,"\r\n");
         }

else 
        {
            UARTWrite(2,"First Char NOT OK");
            UARTWrite(2,"\r\n");

        }
对于您的特定代码,它应该是

 if(condition)
  {
  }

  else
  {
  }
if (string_serial[0] == '*')
        {   

            UARTWrite(2,"First Char OK");
            UARTWrite(2,"\r\n");
         }

else 
        {
            UARTWrite(2,"First Char NOT OK");
            UARTWrite(2,"\r\n");

        }
=运算符为赋值,成功时赋值返回true。您需要的是==用于比较

如上面的代码所示,对字符也使用单引号。

表示单个字符,但表示字符串。下面这行应该行

if (string_serial[0] == '*')
表示单个字符,但表示字符串。下面这行应该行

if (string_serial[0] == '*')

如果结构不正确,请检查

试试这个:

char string_serial[50]="starting Value";    

if (string_serial[0] == '*')
{   

   UARTWrite(2,"First Char OK");
}

else {

  UARTWrite(2,"First Char NOT OK");
  UARTWrite(2,"\r\n");

}

如果结构不正确,则需要将=更改为==并从if块中取出else块

试试这个:

char string_serial[50]="starting Value";    

if (string_serial[0] == '*')
{   

   UARTWrite(2,"First Char OK");
}

else {

  UARTWrite(2,"First Char NOT OK");
  UARTWrite(2,"\r\n");

}

您需要将=更改为==并将else块从if块中取出

也许还需要将=更改为==也可能需要将=更改为==第2行:*不是字符,确切地说是字符串const char[2]。对字符=>'*'使用单引号。第3行:你有一个大括号问题,正确的语法是=>if/*condition/*{/*code if true*/}否则{/*code if false/*}你必须使用==和*应该在单引号中,就像string_serial[0]='*'一样,而且大括号要保持在正确的位置。if{/*if block*/}else{/*else block*/}第2行:*不是字符,确切地说是字符串const char[2]。对字符=>'*'使用单引号。第3行:你有一个大括号问题,正确的语法是=>if/*condition/*{/*code if true*/}否则{/*code if false/*}你必须使用==和*应该在单引号中,就像string_serial[0]='*'一样,而且大括号要保持在正确的位置。if{/*if block*/}else{/*else block*/}我认为这一切都很好,但我仍然在输入端得到一个错误语法错误,但可能这是特定于Flyport的。这是伟大的在这里,我得到一个答案在2分钟内,在飞港论坛上,我可以等待一个星期!许多的thanks@Simon_A:输入结束时的语法错误主要是因为不匹配的花括号,请检查您的程序中是否每个打开的{有一个匹配的}非常感谢,就是这样。我认为这一切都很好,但我仍然在输入结束时收到错误语法错误,但可能这是特定于Flyport的。这是伟大的在这里,我得到一个答案在2分钟内,在飞港论坛上,我可以等待一个星期!许多的thanks@Simon_A:输入端的语法错误主要是由于不匹配的花括号,请在程序中检查每个打开的{有一个匹配的}非常感谢,就是这样。