目前正在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.你们知道什么是错的吗? 或者还有其他方法来计算长度吗?
答案 0 :(得分: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.
看看会发生什么。我怀疑你会看到三个作为回报值。
答案 1 :(得分:0)
也许你真的想要
scanf
这是一个展示了这一点的gcc程序(我命名为dd.c)
int x = sizeof(RXDATA);
编译
#include <stdio.h>
unsigned char RXDATA[80];
int main () {
printf(" sizeof RXDATA = %d\n", (int) sizeof(RXDATA));
}
运行
$ gcc dd.c -o ddd
另请参阅相关线程sizeof- function or macro?