如何在c中找到char数组的长度
我想找到这个的长度:
char *s[]={"s","a","b"};
它应该用 /0 计数 4,但是 strlen 或 sizeof(s)/sizeof(char) 给了我错误的答案。 我怎样才能找到它?
I want to find the length of this :
char *s[]={"s","a","b"};
it should count 4 with the /0 but the strlen or sizeof(s)/sizeof(char) gives me wrong answers..
How can i find it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您正在创建一个
char*
数组,而不是char
数组。这就是strlen
不起作用的原因。使用如果您想要单个字符串,请使用
You are making an array of
char*
and not ofchar
. That's whystrlen
won't work. UseIf you want a single string use
无论
s
包含什么类型,sizeof(s) / sizeof(s[0])
都有效。sizeof(s) / sizeof(s[0])
works no matter what types
contains.您定义的不是字符串,因此没有 NULL 终止字符。这里您声明了指向 3 个单独字符串的指针。顺便说一句,您应该将数组声明为 const char* 。
What you have defined is not a string hence there is no NULL terminating character. Here you have declared pointers to 3 separate strings. BTW, you should declare your array as
const char*
.C 中没有直接的方法来确定数组的长度。C 中的数组由内存中的连续块表示。
您必须将数组的长度保留为单独的值。
There is no direct way to determine the length of an array in C. Arrays in C are represented by a continuous block in a memory.
You must keep the length of the array as a separate value.
如果您以空字符终止数组,则 strlen 有效。除非您跟踪它,否则您无法找到 char 数组中的元素数量。即把它存储在像n这样的变量中。每次添加成员增量 n 和每次删除减量 n
strlen works if you terminate your array with null character. You cannot find number of elements in a char array unless you keep track of it. i.e store it in some variable like n. Every time you add member increment n and every time you remove decrement n
为什么要数4?这个数组中有 3 个指向 char 的指针,在大多数 32 位平台上应该有 12 个。
Why should it count 4? you have 3 pointers to char in this array, it should count 12 on most 32-bit platforms.