有什么方法可以计算字符串指针数组中的元素吗?其中的元素指的是其中的每个单词或短语,这里是一个包含 3 的数组的示例元素(本例中的每个短语)。
char *s[] = {
"To err is human...",
"But to really mess things up...",
"One needs to know C!!",
};
所以这里数组有3个位置(即3个元素),每个位置都指向一个内存地址,该地址是字符串的开头,但仍然很难确定数组是否到达末尾,所以我添加了第四个元素'\0',所以最后会有2个空字符,然后实现这个函数。
int cantidadElementos(char *arr){
int count=0;
while(*arr!='\0'){
while(*arr!='\0'){
arr++;
}
arr++;
if(*arr!='\0'){
count++;
}
}
return count;
}
我尝试做的是边界检查,所以我发现如果我使用数组中每个指针的地址,我就可以看到字符串的地址,然后查看最后一个值是否为“\0” (检查字符串是否到达末尾),但是这是不可能的,因为数组的下一个内存地址可能包含垃圾值,所以我想出了在数组末尾添加另一个空字符,然后检查是否有一个双“\0”。
我只是觉得这个解决方案很糟糕(有效,但仍然很糟糕)。 这可能适合文本处理器,因为它只多了 2 个字节的内存,我将用它来确定文本是否已到达末尾。
那么回到我的问题,有什么方法可以计算字符串指针数组中的元素吗?我已经进行了很多搜索,但无法想出更好的解决方案。
最佳答案
测试一下:
const char *s[] = {"To err is human...", "But to really mess things up...", "One needs to know C!!"};
printf("%d\n",sizeof(s)/sizeof(*s));
关于C - 计数元素(边界检查) - 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52481172/