C语言 字符串相关函数

C语言没有 字符串 类型,是将字符串当作数组( char s[ ] )来处理,存储方式是按字节(char)一位一位的存储并以 '\0' 结尾(多一个字节)表示结束(注意是以ASCII码方式存储),因此字符串的操作限制和数组的操作限制一样,使用字符串的形式有四种(注意赋值方式,不同方式导致不同的存储位置):

用字符数组( char s[10] = "hello" 或 strcpy(s,"hello") 或 s[10] = {'h','e','l','l','0'}),前两种赋值方式导致字符串存储在常量区,在用时再拷贝到栈区,第一种赋值方法只能在数组初始化时使用,而最后一种赋值方法会自动用 '\0' 补全空余字节(注意数组和字符串的长度,一定要给 '\0' 多留一个字节)且导致字符串存储在栈区。字符串可以更改。

用指针( char *p )指向字符数组(p = s),这仅仅是字符数组的另一种表达形式

用指针( char *p )指向字符串( p = "hello" ),字符串是常量,p是常量指针,此时字符串存储在常量区,且不可更改

指针( char *p )先分配内存( malloc )后再赋值字符串( strcpy(p,"hello") ),此时字符串存储在堆区(malloc分配堆内存),可以更改

获取字符串长度

size_t strlen ( const char * str );

str:字符数组

返回值:字符串的长度,即字符数组中 '\0' 前有几个字符,不包括 '\0‘

把 src 复制给 dest(后给前)。字符串赋值方法

char *strcpy(char *dest, const char *src)

dest:被写入的字符数组

src:字符串所在的字符数组

返回值:

将 src 复制追加给 dest(后给前)

char *strcat(char *dest, const char *src)

dest:被追加的字符数组

src:字符串所在的字符数组

返回值:

比较字符串。字符串的比较方法

int strcmp(const char *str1, const char *str2)

str1:字符数组

str2:字符数组

返回值:0=字符串一样,!0=字符串不同

在字符串 s 中从左往右从上到下查找第一次出现字符 的位置(strrchr)

char *strchr(const char *s, int c);

s:被查找的字符数组

c:想查找的字符,int类型

返回值:在 s 中第一次出现 c 字符的位置

在字符串 haystack 中查找第一次出现字符串 needle 的位置

char *strstr(const char *haystack, const char *needle)

haystack:被查找的字符数组

needle:想查找的字符数组

返回值:在 haystack 中第一次出现 needle 字符串的位置

以delimiters中的字符串或字符为分割点,分别输出str的各部分

期间没有生成新的字符串,只是在str字符串内将首次出现的分割符替换成' \0 ',因此源str字符串会被更改,若起始位置即为分割符会被忽略(也不会跟随第一部分打印出来,会消失),返回str字符串获得第一个部分,若还想继续获得其余部分,只需再次调用strtok函数并将第一个参数置NULL,表示从上一次隐式保存的位置(this指针指向分割符的下一位)继续分解字符串,当this指针指向' \0 '时,表示分割完毕,此时返回NULL

char * strtok ( char * str, const char * delimiters );

str:要分割的字符数组,不能传递字符串常量

delimiters:作为分割符的字符或字符串,其中字符串里的任一字符都是分割符,并非按字符串严格匹配,而是按字符匹配,字符串更像是一个分割符的集合

返回值:str分割后的各部分,NULL = 分割完毕

获得错误码对应的说明字符串

char * strerror ( int errnum );

errnum:错误码

返回值:错误码对应的说明字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值