我在创建此函数时遇到问题,该函数应该返回在数组中输入的字符数。但总是返回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;
}
答案 0 :(得分:0)
pcadena
,指针永远不会是0(NULL)...你的意思是它指向的字符是'\0'
if (*pcadena)
另一个问题是,一旦找到终结符,就会返回0
。你应该在那里返回cantidad
。
注意:cantidad == a
答案 1 :(得分:0)
将if(pcadena!=0)
替换为if(*pcadena!='\0')
。
另外,将else
条件更改为
else
{
return cantidad;
}
或
else
{
break;
}
答案 2 :(得分: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
函数。没有必要重写这个。