-1

我创建的这个函数有问题,该函数应该返回数组中输入的字符数。但总是返回 20,它是数组本身的限制。

代码:

int LongitudCadena (char *pcadena) {
    // cantidad its the counter of chars that in the array
    int cantidad=0;  
    //M its a constant equals 20, that its the limit of the array
    for(int a=0;a<M;a++){  
        if(pcadena!=0){
            pcadena++;   
            cantidad++;
        } else {
            return 0;
        }
    }
    return cantidad;
}
4

3 回答 3

0

pcadena,指针,永远不会是0(NULL)......你的意思是它指向的字符是'\0'

if (*pcadena)

另一个问题是一旦你找到终结者,你就返回0. 你应该回到cantidad那里。

笔记:cantidad == a

于 2013-07-23T22:19:16.457 回答
0

替换if(pcadena!=0)if(*pcadena!='\0')

另外,将else条件更改为

else 
{
   return cantidad;
}

或者

else 
{
   break;
}
于 2013-07-23T22:25:21.607 回答
0

代码有几个问题。首先,您应该测试指针指向的地址的内容。

...
if(*pacadena!=0) {
    ....

其次,为什么当pcadena为0时在while循环中返回0?你不应该返回当前长度吗?假设你的数据总是以 结束\0,那么你的for循环应该是这样的:

for(int a=0;a<M;a++){  
    if(*pcadena){
        pcadena++;   
        cantidad++;
    } else {
        return cantidad;
    }
}

此外,如果您的数据确实以 终止\0,那么您应该只使用该strlen函数。没有必要重写这个。

于 2013-07-23T22:27:19.617 回答