1

我是 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

4 回答 4

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)。您需要的是==(用于比较)。

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

于 2012-12-01T13:25:00.277 回答
2

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

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

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

一个单一的=意思是“分配”;double ==表示“比较”。

于 2012-12-01T13:24:46.227 回答
1

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

if (string_serial[0] == '*')
于 2012-12-01T13:25:49.207 回答
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

于 2012-12-01T13:25:57.563 回答