5、linux下应用字符串相关调用函数列举说明

1、函数原型int strcmp(const char *s1,const char *s2);
设这两个字符串为s1,s2,
规则
当s1<s2时,返回为负数
当s1=s2时,返回值= 0
当s1>s2时,返回正数
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇''为止。如:
"A"<"B" "a">"A" "computer">"compare"

2、原型为extern char *strchr(const char *s,char c)

可以查找字符串s中首次出现字符c的位置

3、函数原型char *strncpy(char *dest,char *src,size_t n)

把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回dest。

1)src串长度<=dest串长度,(这里的串长度包含串尾NUL字符)

如果n>src由于长度达到src NUL,正常复制,特别注意,如果src中有NULL,strncpy复制到NUL即使没到n也提前停止。如果n = src串长度,与strcpy一致。注意n的选择当n > dest串长度,dest栈空间溢出产生崩溃异常。

2)src串长度>dest串长度

如果n =dest串长度,则dest串没有NUL字符,会导致输出会有乱码。如果不考虑src串复制完整性,可以将dest 最后一字符置为NUL。

4、原型为size_t strlen(const char *string); ,其中size_t实际上是unsigned int

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符''为止,然后返回计数器值(长度不包含'')。

 而sizeof()返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个取字节运算符,strlen是函数

char str[20]="0123456789";

long a=strlen(str); //a=10;

int b=sizeof(str); //而b=20;

原文地址:https://www.cnblogs.com/liusiluandzhangkun/p/8807419.html