- 主题:有办法求含有\0的字符数组的长度嘛?
还有 char a[x] 这样的用法?
我以前学的只能这样用:
#define BUFLEN 1024
char a[BUFLEN];
能使用不预先赋值的变量 x 来开数组吗?
【 在 z16166 的大作中提到: 】
: C的动态数组有两种,一种在堆上,就是malloc得到的,一种在栈上 char a[x];
--
FROM 216.240.30.*
可以的吧:
#define NELEMS(array) (sizeof(array) / sizeof(array[0]))
【 在 e729 的大作中提到: 】
: 首先这个数组在C程序里没有存在的意义。
: 其次,既然是数组,那用户自己应该知道它的长度。如果不知道长度,又不知道结尾的标志,难么,没人能计算它的长度
--
FROM 216.240.30.*
可以的,栈上的变长数组Variable Length Arrays (VLAs),C99的内容
不过大数组一般不推荐在栈上,容易栈溢出
【 在 vieux 的大作中提到: 】
: 还有 char a[x] 这样的用法?
: 我以前学的只能这样用:
: #define BUFLEN 1024
: ...................
--
FROM 61.48.130.*
难怪,没学过新标准。
谢谢分享。
【 在 z16166 (Netguy) 的大作中提到: 】
: 可以的,栈上的变长数组Variable Length Arrays (VLAs),C99的内容
:
: 不过大数组一般不推荐在栈上,容易栈溢出
:
--
FROM 136.56.52.*
楼主,不是\0那么结束字符需要自己定义再自己检测了
【 在 slowaction 的大作中提到: 】
: 少侠,我认为你用了一本错误的教材
: 全是这种没事找事的题目
: 你这问题类似你问 如果一个人心跳停了之后怎么能测到他的心跳
: ...................
--
FROM 39.155.232.*
哈哈,竟然笑了
【 在 slowaction 的大作中提到: 】
: 少侠,我认为你用了一本错误的教材
: 全是这种没事找事的题目
: 你这问题类似你问 如果一个人心跳停了之后怎么能测到他的心跳
--
FROM 117.136.38.*
【 在 sqsl 的大作中提到: 】
: 数组内任何位置都可能出现数量不定的\0
: 比如:
: char arr[] = {'a', '\0', '\0', 'd', '\0'};
: ...................
c语言标准不支持这种字符串,
这种字符串pascal语言的专利, 因为, pascal字符串,在开始就记录了字符串长度,然后才是字符串数据。
c语言最近的实现就是使用字符数组, 但是,字符数组虽然可用动态分配,
但是,也只有分配长度, 没有使用长度, 这个需要自己负责记录使用了多少。
当然, 你也可用用非法字符提前填充, 那么, 实时计数长度可用检查是不是合法字符,
计数合法字符数量就能知道字符长度了, 话说, NULL(\0), 本身就不是合法字符。
--
FROM 115.171.244.*