关于C编程中的strlen函数

时间:2014-09-24 02:12:06

标签: c pic rs485

目前正在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.你们知道什么是错的吗? 或者还有其他方法来计算长度吗?

2 个答案:

答案 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?