1

目前正在为 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。你们知道出了什么问题吗?或者有没有其他方法来计算长度?

4

2 回答 2

3

首先,您的调用CountData()需要将值存储在某处,例如:

int x = countData(RXDATA);

但是想一想这个。数以百万计的人strlen每天都在使用而不会失败。测试过您的代码的人数可能只有个位数。你认为问题出在哪里

:-)

如果您strlen返回零,几乎可以肯定是因为输入缓冲区的第一个字节是 a \0,这意味着字符串长度为零。

临时更改:

BYTE RXDATA[128];
CountData(RXDATA);

变成类似的东西:

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

看看会发生什么。我怀疑你会看到三个作为返回值。

于 2014-09-24T02:25:46.640 回答
0

也许你真的想要

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
$  

另请参阅相关的线程sizeof- 函数或宏?

于 2018-09-26T09:50:31.657 回答