【发布时间】:2014-11-18 09:19:32
【问题描述】:
目前正在为 MPLAB IDE 中的 PIC 单片机编译 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函数会返回nLen
-
RXDATA中的数据从何而来?您能否展示如何用数据填充RXDATA,然后调用CountData? -
strlen()在遇到'\0'时停止。检查pData[0]。 -
BYTE底层的类型和大小是多少,<limits.h>中的CHAR_BIT的值是多少?这可能不是问题,但如果BYTE是 16 位类型,char是 8 位类型并且数据是大端,那么您可以很容易地获得零字符串长度。跨度> -
我猜你错误地认为
strlen会告诉你数组有多长。strlen只是向前计数,一次一个字节,直到遇到一个空(零)字节。如果您的数据不是字符数据,它很容易在数据中间包含空字节。