[英]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.