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] == '*')

一重引用符で囲まれた単一の文字は「文字」を意味します。二重引用符で囲まれた単一の文字は、「1 文字の 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 に答える