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

时间:2012-12-01 13:23:21

标签: c

我是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是否为*。

由于

4 个答案:

答案 0 :(得分:6)

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");

        }

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

也可以使用单引号作为字符,如上面的代码所示。

答案 1 :(得分:2)

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

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

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

=表示“作业”;双==表示“比较”。

答案 2 :(得分:1)

''适用于单个char,但""适用于字符串。以下行应该有效。

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

答案 3 :(得分:1)

如果结构不正确

试试这个:

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 block

中获取if block