1

現在、MPLAB IDE で PIC MCU の C プログラミングをコンパイルしています。文字列の長さを数えたいだけで、strlen 関数を使用しています。しかし、値0を返し続けます。以下は私のコーディングです:

メインループでは、この関数を取得しました:

BYTE RXDATA[128];

CountData(RXDATA);

また、CountData 関数は次のとおりです。

BYTE CountData(BYTE* pData)
{
    BYTE nLen;
    nLen = strlen((char*)pData);
    return nLen;
}

RXDATA の実際の長さは通常 50 を超えていますが、私の nLen は常に 0 を返します。何が問題なのか分かりますか? または、長さを数える他の方法はありますか?

4

2 に答える 2

3

まず、 への呼び出しはCountData()、次のように値をどこかに保存する必要があります。

int x = countData(RXDATA);

しかし、これについて少し考えてみてください。無数の何百万人もの人々がstrlen毎日、失敗することなく使用しています。あなたのコードをテストした人の数は、おそらく一桁台前半になるでしょう。問題はどこにあると思いますか。

:-)

strlenゼロを返す場合、入力バッファの最初のバイトが であることがほぼ確実です。これ\0、文字列の長さがゼロであることを意味します。

一時的に変更:

BYTE RXDATA[128];
CountData(RXDATA);

次のようなものに:

BYTE RXDATA[128];
strcpy (RXDATA, "Pax");
int x = CountData(RXDATA); // then check x.

そして何が起こるか見てください。戻り値として 3 が表示されると思います。

于 2014-09-24T02:25:46.640 に答える