- 主题:有办法求含有\0的字符数组的长度嘛?
数组内任何位置都可能出现数量不定的\0
比如:
char arr[] = {'a', '\0', '\0', 'd', '\0'};
不能用sizeof之类的库函数
chatGPT给了我错误的答案,判断\0来求解的
库函数strlen也求错了
用sizeof可以求对
如果没办法求我就放弃了
--
修改:sqsl FROM 111.193.230.*
FROM 111.193.230.*
对,我问的是字符数组的情况,字符串中间不会有\0
您说的动态数组指的是malloc之类的库函数生成的数组嘛?
【 在 z16166 的大作中提到: 】
: 字符串,要么有单独的变量存放其长度,要么有结束符。
: C里的字符串约定的结束符是0,strlen()等字符串函数假定传入的参数是遵循这个约定的。
: 不按这个约定,那就是自己山寨了一个“字符串”,或者不叫字符串,而只是一个char array。
: ...................
--
FROM 111.193.230.*
收到,谢谢
【 在 z16166 的大作中提到: 】
: C的动态数组有两种,一种在堆上,就是malloc得到的,一种在栈上 char a[x];
--
FROM 111.193.230.*
应该也可以,sizeof可以计算出来
【 在 e729 的大作中提到: 】
: 首先这个数组在C程序里没有存在的意义。
: 其次,既然是数组,那用户自己应该知道它的长度。如果不知道长度,又不知道结尾的标志,难么,没人能计算它的长度
--
FROM 111.193.230.*