strlen

笔记strlen() ,sizeof(),strcpy(),strncpy(),strcat()

依然范特西╮ 提交于 2020-03-13 12:47:18
strlen函数的意思是测试字符串的字符长度,不含字符串结束标志的。 int strlen( const char *str) { assert(str != NULL); int len; while((*str++) != '\0') { len++; } return len; } sizeof是运算符,它的结果是字符串在内存中的所占字节大小,它要把\0算进去的。 strcpy函数原型 ( strcpy(s1,s2); strcpy函数的意思是:把字符串s2中的内容copy到s1中,连字符串结束标志也一起copy ) char *strcpy(char *strDest, const char *strSrc)//strDest为目标,strSrc为源 { assert((strDest!=NULL) && (strSrc !=NULL)); //如果两个为空则不用复制,直接中止 char *address = strDest; //用address指向strDest开始地址 while( (*strDest++ = * strSrc++) != ‘\0’ ) //复制,直到源串结束; NULL ; //空操作 return address ; //返回strDest开始地址 } } strncpy函数 : 利用标准库函数strncpy(),可以

打印出输入字符串的有效长度,不借助strlen函数实现

若如初见. 提交于 2020-03-12 13:50:49
打印出输入字符串的有效长度,不借助strlen函数实现 通常对字符串有效长度的统计,我们会采用strlen()函数,它的头文件为string.h # include <stdio.h> # include <string.h> # define SIZE 20 int main ( ) { char str [ SIZE ] = "word ok" ; //定义str,并赋值 int length = 0 ; //定义length length = strlen ( str ) ; //获取str的有效长度 printf ( "字符串长度为:%d.\n" , length ) ; //输出字符串长度 return0 ; 结果为 :字符串长度为:7. 如果不借助strlen()函数,则需要找到第一个’\0’后的字符,使i指向’\0’ # include <stdio.h> # include <stdlib.h> # define MAX_STRING 200 //数组容量 int main ( ) { char str [ MAX_STRING ] = "\0" ; //定义数组str,并将其初始化为0 int i = 0 ; printf ( "please input a string:\n" ) ; gets_s ( str ) ; //标准输入对str赋值 while (

php获取字符串长度函数strlen和mb_strlen

风格不统一 提交于 2020-03-10 04:22:23
php获取字符串长度函数strlen和mb_strlen count() - 计算数组中的单元数目,或对象中的属性个数 strlen — 获取字符串长度,一个汉字为3个字符 mb_strlen() - 获取字符串的长度 ----------- int strlen ( string $string ) 成功则返回字符串 string 的长度;如果 string 为空,则返回 0。 范例 <?php $str = 'abcdef'; echo strlen($str); // 6 $str = 'abcdef中国'; echo strlen($str); // 12 echo mb_strlen($str);//12 echo count($str);//1 $str = ' ab cd '; echo strlen($str); // 7 ?> 注意: strlen() returns the number of bytes rather than the number of characters in a string. strlen() returns NULL when executed on arrays, and an E_WARNING level error is emitted. 代码在线运行 - 在线工具 http://tool.lu/coderunner/ 来源

PHP中strlen和mb_strlen函数的区别

偶尔善良 提交于 2020-03-10 04:09:53
strlen strlen — 获取 字符串 长度 int strlen ( string $ string ) 返回给定的 字符串 string 的长度。 mb_strlen int mb_strlen ( string $str [, string $encoding ] ) 返回给定的 字符串 string 的长度。 encoding参数为 字符编码 。如果省略,则使用内部 字符编码 。 例子: <?php //测试时文件的编码方式要是UTF8 $str='中文a字1符'; echo strlen($str).'<br>';//14 echo mb_strlen($str,'utf8').'<br>';//6 echo mb_strlen($str,'gbk').'<br>';//8 echo mb_strlen($str,'gb2312').'<br>';//10 ?> 来源: https://www.cnblogs.com/wuheng1991/p/6380696.html

字符数组 字符串 strcpy strlen

最后都变了- 提交于 2020-03-07 21:04:55
文章目录 1.字符串 2.下面来看看字符数组 3. strlen和strcpy 1.字符串 c++中字符串都是以'\0'结尾 const char * ss = "abc" ; cout << ss << endl ; cout << strlen ( ss ) << endl ; //后续会讲 输出 2.下面来看看字符数组 char ss [ ] = { 'a' , 'b' , 'c' } ; cout << ss << endl ; 输出 这里字符ss在字符‘c’之后若干个字符才是’ \0' ,这时才结束。如果将ss赋值给一个字符指针,并输出字符指针,那么输出仍然是一样的。 const char * s1 = ss ; cout << s1 << endl ; 3. strlen和strcpy //不统计'\0' strlen ( const char * ) ; //按字节拷贝,直到遇见'\0',并且将'\0'拷贝 strcpy ( char * dst , const char * src ) ; //将这个字符串常量拷贝到一个数组中必须给数组空间 const char * s = "abc" ; // strlen(s) = 3,而拷贝到数组中必须要有'\0',因此 “+1” char * p = new char [ strlen ( s ) + 1 ] ;

关于sizeof和strlen,

允我心安 提交于 2020-03-06 05:38:45
size of: 是统计 对象所占的存储单元(字节)个数的运算符 。在程序编译阶段得出其值。用于表示字符串长度时所得结果 包含字符\0的长度 。 参数可以是指针、数组、类型、对象和函数等。 strlen: 一般用来 统计字符串中字符的个数的函数 ,且只能用于计算字符串的长度,用于 表示从当前位到字符\0(不包含字符\0)所占的字符个数 。 参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就隐式转化为指针了。 下面用一些示例来具体说明: int a[] = {1,2,3,4}; printf("%d\n", sizeof(a));//该数组长所占字节数为4*4=16 printf("%d\n", sizeof(a + 0));//当a+0时,a便隐式转换成了指针,此时计算首元素所占字节数。答案为4 printf("%d\n", sizeof(*a));//*a指向数组a的整形元素1,该元素占4个字节, printf("%d\n", sizeof(a + 1));//同2 printf("%d\n", sizeof(a[1]));//计算第二个整形元素2所占字节数 printf("%d\n", sizeof(&a));//指针4字节 printf("%d\n", sizeof(*&a));//*与&互相抵消,然后原理同1 printf("%d\n", sizeof

PHP数字金额转换大写金额

↘锁芯ラ 提交于 2020-03-05 01:54:30
早些年做CRM用到的一个金额转换函数,今天从旧项目中拿出来记录一下。金额转换的函数方法有很多,都很不错。不过这个是小崔刚工作的时候写的一个转换函数,多少还是有点纪念意义。如有问题请朋友们指出,小崔及时修正。谢谢啦! 废话不多说直接上代码: 1 <?php 2 3 /** 4 * 数字金额转换大写数字 5 * $num 数字类型 6 */ 7 8 function inttodaxie($num) { 9 //判断$num是否数字 10 if(!is_numeric($num)) return -1; 11 $dint = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'); 12 $len = strlen($num); 13 $dstr = ''; 14 for($i = 0; $i <= $len; $i++) { 15 $key_ = substr($num, $i, 1); 16 $dstr .= $dint[$key_]; 17 } 18 return $dstr; 19 } 20 21 $result = inttodaxie(90011234); 22 var_dump($result); 23 echo '<br>'; 以上是基础转换代码,在这个基础上进行二次改造: 1 <?php 2 3 /** 4 *

sizeof和strlen

China☆狼群 提交于 2020-03-03 20:56:18
sizeof是运算符,参数可以是数组、指针等。 strlen是函数,参数必须是字符型指针(char*)。 数组 int arr [ ] = { 1 , 2 , 3 , 4 } ; printf ( "%d\n" , sizeof ( arr ) ) ; // 16 printf ( "%d\n" , sizeof ( arr + 0 ) ) ; // 4 int* arr已经隐式转换为指针printf("%d\n", sizeof(*arr)); // 4 已经隐式转换位int* 在解引用,得到int printf ( "%d\n" , sizeof ( arr + 1 ) ) ; // 4 arr已经隐式转换成 int* printf ( "%d\n" , sizeof ( arr [ 1 ] ) ) ; // 4 int printf ( "%d\n" , sizeof ( & arr ) ) ; // 4 &arr是一个int(*)[4],指针 printf ( "%d\n" , sizeof ( * & arr ) ) ; // 16 &arr是数组指针,再*从这个地址开始取int(*)[4]类型对应的字节数 printf ( "%d\n" , sizeof ( & arr + 1 ) ) ; // 4 &arr得到一个int(*)[4]再加1还是int(*)[4], 指针

[原题复现+审计][0CTF 2016] WEB piapiapia(反序列化、数组绕过)[改变序列化长度,导致反序列化漏洞]

别来无恙 提交于 2020-03-02 07:34:11
简介 原题复现: 考察知识点: 反序列化、数组绕过 线上平台: https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 漏洞学习 数组绕过 1.1 url传递数组 当我们要向服务器传递数组时,我们可以通过 http://127.0.0.1/index.php?a[]=hello&a[]=world 来传递,这样,在后端, $a = $_GET['a']; 就可以接收到 $a[0]=“hello”, $a[1]=“world”。 md5(Array()) = null sha1(Array()) = null ereg(pattern,Array()) = null preg_match(pattern,Array()) = false strcmp(Array(), "abc") = null strpos(Array(),"abc") = null strlen(Array()) = null https://www.jianshu.com/p/8e3b9d056da6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 一个简单的例子 从这个例子我们可以看出序列化后的字符串以"作为分隔符

strlen&&sizeof

懵懂的女人 提交于 2020-03-01 17:40:59
sizeof 和 strlen 有以下区别:  sizeof 是一个操作符,strlen 是库函数。  sizeof 的参数可以是数据的类型,也可以是变量,而 strlen 只能以结尾为‘\ 0‘的字符串作参数。  编译器在编译时就计算出了 sizeof 的结果。而 strlen 函数必须在运行时才能计算出来。并且 sizeof 计算的是数据类型占内存的大小,而 strlen 计算的是字符串实际的长度。  数组做 sizeof 的参数不退化,传递给 strlen 就退化为指针了。 int _tmain(int argc, _TCHAR* argv[]) { //strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0', // 如果你只定义没有给它赋初值,这个结果是不定的 // 它会从aa首地址一直找下去,直到遇到'\0'停止 //而sizeof()返回的是变量声明后所占的内存数,不是实际长度, //此外sizeof不是函数,仅仅是一个操作符,strlen是函数。 char aa[10]; std::cout << strlen(aa) << endl; //结果是不定的 char bb[10]={'\0'}; std::cout << strlen(bb) << endl; //结果为0 char cc[10] = "hui"; std: