【发布时间】:2011-05-14 11:57:20
【问题描述】:
我想知道这个的长度:
char *s[]={"s","a","b"};
它应该用 /0 计数 4 但 strlen 或 sizeof(s)/sizeof(char) 给了我错误的答案.. 怎么找到?
【问题讨论】:
我想知道这个的长度:
char *s[]={"s","a","b"};
它应该用 /0 计数 4 但 strlen 或 sizeof(s)/sizeof(char) 给了我错误的答案.. 怎么找到?
【问题讨论】:
您正在创建char* 的数组,而不是char 的数组。这就是strlen 不起作用的原因。使用
sizeof(s) / sizeof(char*) //should give 3
如果你想要一个字符串使用
char s[] = "sab";
【讨论】:
sizeof(s) / sizeof(s[0]) 无论s 包含什么类型都有效。
【讨论】:
sizeof s / sizeof *s(或者,使用多余的括号,sizeof (s) / sizeof (*s))。
您定义的不是字符串,因此没有 NULL 终止字符。在这里,您已经声明了指向 3 个单独字符串的指针。顺便说一句,您应该将您的数组声明为const char*。
【讨论】:
没有直接的方法来确定 C 中数组的长度。C 中的数组由内存中的连续块表示。
您必须将数组的长度保留为单独的值。
【讨论】:
strlen 如果您以空字符终止数组,则可以使用。除非您跟踪它,否则您无法在 char 数组中找到元素的数量。即将它存储在像n这样的变量中。每次添加成员增量 n 和每次删除减量 n 时
【讨论】:
为什么要数 4?你在这个数组中有 3 个指向 char 的指针,在大多数 32 位平台上它应该是 12 个。
【讨论】: