簡體   English   中英

關於C編程中的strlen函數

[英]About strlen function in C programming

目前正在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.你們知道什么是錯的嗎? 或者有沒有其他方法來計算長度?

首先,對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.

看看會發生什么。 我懷疑你會看到三個作為返回值。

也許你真的想要

int x  = sizeof(RXDATA);

這是一個gcc程序(我命名為`dd.c')來演示這一點

#include <stdio.h>

unsigned char RXDATA[80];

int main () {
    printf(" sizeof RXDATA = %d\n", (int) sizeof(RXDATA));
}

編譯它

$ gcc dd.c -o ddd

運行它

$ ./ddd
 sizeof RXDATA = 80
$  

另請參見相關的線程大小函數或宏?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM