字符串函数<string.h>
strlen:
strlen--string length--求字符串长度
所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。
⒈sizeof操作符的结果类型是size_t(返回类型),它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
⒉sizeof是取字节运算符(关键字),strlen是函数。
⒊sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以'\0'结尾的。
sizeof还可以用函数做参数,比如:
⒋数组做sizeof的参数不退化,传递给strlen就退化为指针了。
⒌大部分编译程序 在编译的时候就把sizeof计算过了是类型或是变量的长度。这就是sizeof(x)可以用来定义数组维数的原因
6.strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,不是类型占内存的大小。
7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。
⒏当适用了于一个结构类型时或变量, sizeof 返回实际的大小,当适用一静态地空间数组, sizeof 归还全部数组的尺寸。
⒐数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,
strlen("abc")-strlen("abcdef")
//返回值大于0,strlen为无符号整形
strcpy:
strcpy--string copy 拷贝函数
是一种C语言的标准库函数,strcpy把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*。
原型为:
char * strcpy(char * strDest,const char * strSrc);
注意事项:目标字符串,源字符串必须包含‘\0’,且目标空间足够大。
atrcpy:长度不受限制。
strncpy:使长度受限制。如:
int arr1[10]={0};
int arr2="asdfgh";
strncpy(arr1,arr2,3);
//即arr1中只拷贝到了asd
stract:
stract--追加一个字符串
头文件中的函数,用于将两个char类型数组相连,结果放在dest中,并返回拼接后的dest和src。
原型为:
stract(char* dest,const char* src);
注意事项:源字符串和目标字符串都要有‘\0’
目标空间足够大,目标空间可修改。
stranct:使长度受限制。
strcmp:
strcmp--string compare 比较函数
比较两个字符串
设这两个字符串为str1,str2,
若str1==str2,则返回零;
若str1<str2,则返回负数;
若str1>str2,则返回正数。
比较两个字符串对应位置上的ASCLL码值的大小。
原型为:
int strcmp(const char*str1,const char*str2)
strncpy:使长度受限制。
strstr:
作用是返回字符串中首次出现子串的地址。
语法:
str1: 被查找目标 string expression to search.
str2: 要查找对象 The string expression to find.
返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。
原型为:
char*strstr(const char*str1,const char*str2)
strtok:
分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。
原型为:
char *strtok(char*str, const char *delim)
strerror:
从内部数组中搜索错误号 errnum,并返回一个指向错误消息字符串的指针。strerror 生成的错误字符串取决于开发平台和编译器
原型为:
char *strerror(int errnum)