c++-关于strlen函数的一个不解

问题描述

关于strlen函数的一个不解

char arr[]={1,2,3,4,5,6,7,8};
cout<<strlen(arr);

为什么以上语句输出的值是19?

解决方案

两种定义方式:
char arr[9] = {'1', '2', '3', '4', '5', '6', '7', '8'}
char arr[] = {'1', '2', '3', '4', '5', '6', '7', '8', ''} //明确以''结尾。
意识没有加单引号,二是没有以''结尾。
具体原因就不太清楚了。

解决方案二:

因为strlen()函数是根据''来判断字符数组结束的,也是根据它来计算长度的。若定义时没有“”,则会从数组的存储位置开始直到找到一个空字符,并得到所谓的字符串长度

解决方案三:

应该说你这个代码犯了几个错误。
就这段代码来说,不应该用strlen,应该用sizeof(arr)
如果想用strlen,那么就应该写成char arr[9]={1,2,3,4,5,6,7,8};

时间: 2024-09-14 23:27:20

c++-关于strlen函数的一个不解的相关文章

用c++写了一个函数判断一个数组是否包含另一个数组 但是总是返回-1 请大神们帮忙看看错在哪里

问题描述 用c++写了一个函数判断一个数组是否包含另一个数组 但是总是返回-1 请大神们帮忙看看错在哪里 int substr_index( const char substr[], const char str[]) { int flag = -1; int sizeOfSubstr = sizeof(substr)/sizeof(char); int sizeOfStr = sizeof(str)/sizeof(char); for (int i = 0; i < sizeOfStr; i+

关于c语言中strlen函数使用

问题描述 关于c语言中strlen函数使用 /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ #include struct btbucode//定义结构体btbucode { int n; char pn[50]; }; struct btbucode code[]={{11, "cailiao"},{12, "caiji"},{13, "shang"},{14, "jingji&quo

datagridview-C#中Datatable删除行的一个不解之处

问题描述 C#中Datatable删除行的一个不解之处 C#把Datatable中重复的行删除后绑定DataGridView,发现没变,不清楚是什么情况,各位帮忙看看.代码如下: for(int i=0;i<dt.rows.count;i++) { for(int j=0;j<dt.rows.count;j++) { if(dt.rows[j][2].tostring()==dt.rows[i][2].tostring()) { dt.rows[j].delete(); dt.AccpetCh

PHP字符串长度计算 - strlen()函数使用介绍_php技巧

strlen()函数和mb_strlen()函数 在PHP中,函数strlen()返回字符串的长度.函数原型如下: 复制代码 代码如下: int strlen(string string_input); 参数string_input为要处理的字符串. strlen()函数返回字符串所占的字节长度,一个英文字母.数字.各种符号均占一个字节,它们的长度均为1.一个中午字符占两个字节,所以一个中午字符的长度是2.例如 复制代码 代码如下: <?php echo strlen("www.sunch

c语言-C语言里想要用函数创建一个新的字符数组,并使其等于原有的一个字符数组该怎么做?

问题描述 C语言里想要用函数创建一个新的字符数组,并使其等于原有的一个字符数组该怎么做? #include #include #include char map[4][4]; char creat()//创建一个新的字符数组 { char *maze=(char)malloc(sizeof(map)); return maze; } void main() { int i,j; for(i=0;i<4;i++) { gets(map[i]); } char *maze=creat(); strc

C语言中sizeof()与strlen()函数的使用入门及对比_C 语言

sizeof()函数1,是什么?     sizeof其实就是一个运算符,和那些+,-一样的东西,在程序编译的时候进行解析转换.虽然我们经常见到sizeof后面跟着个小括号,长得和函数差不多,但它和函数完全是两码事. 2,有什么用?     sizeof其实就是用于告诉我们编译器在为某一特定数据或者某种数据类型的数据在存储空间中开辟空间时,开辟的空间大小,以字节为单位. 3,怎么用?     sizeof(类型),或者sizeof(变量)都可以,得到的就是类型或者变量的存储空间.当对变量用的时候

excel通过VLOOKUP函数从一个表中取数到另一个表

  Excel表格处理数据的功能很强大,工作中,经常需要从数据库文件中查找索引数据到另一个文件中,如何实现这个引用?通过VLOOKUP函数,就可以轻松做到. VLOOKUP函数是一个纵向查找函数,用于按列进行查找索引数据.我们根据需求,进行设定就能快速完成. 步骤 打开电脑,点开Excel,打开数据库文件和需要引用数据的文件. 现以一份电子账册的料件为例:企业在海关备案了552个不同的商品,这552个"商品名称"有"备案序号",另一份料件表文件只有"备案序

关于javascript中parseInt函数的一个所谓的bug

javascript|函数 最近我正在升级一个日历控件,出现了一些莫名其妙的错误,最后发现原来是一个parseInt函数的一个所谓的bug引起的,就是在 parseInt("08") 和 parseInt("09") 处理时返回的居然都是 0 ,而 parseFloat函数就没有这样的错误,没办法,我将所有用到parseInt函数的地方都改成了parseFloat函数. 最后经过测试才发现,原来当前面有0的时候,parseInt默认把它当作八进制处理了,01--07

C++不使用变量求字符串长度strlen函数的实现方法

  本文实例讲述了C++不使用变量求字符串长度strlen函数的实现方法.分享给大家供大家参考.具体实现方法如下: 1.strlen的源码实现: ? 1 2 3 4 5 6 7 size_t strlen(const char *str) //strlen不做内存非法判断,如果是NULL,会core. { const char *eos=str; while(*eos++); return (eos-str-1); } 2.常见面试题会要求不使用额外变量,实现strlen函数: 实现一: ? 1