字符串操作之string.h

c《string.h》

字串操作基本常识

char *ptr = “abcd” 

//ptr指向字符串常量“abcd”,“abcd”位于常量区,并未给ptr分配空间,如果使用ptr[1]= ‘x’,表示对字符串常量“abcd”进行修改,会出现Program terminated withsignal 11, Segmentation fault。区分指针和字符串。

 

char s[50] = "ab-cd : ef;gh:i-jkl;mnop;qrs-tu: vwx-y;z";

 //为字符串s分配空间(缓冲区),并值拷贝,strlen(s)为41

 

strcpy(s, "ab-cd : ef;gh:i-jkl;mnop;qrs-tu: vwx-y;z");

 //标准字符串的操作末尾会自动添加’\0’结束

 

一般地,字符串使用规范

规范1

char buf[10] = {'\0'};

strncpy(buf, "abcd",strlen("abcd"));

//strlen(buf) = 4

 

规范2

char buf[] = “abcd”; //与char *ptr = “abcd”不同,不会为ptr分配空间,但是会为buf分配空间

======================================================================

 

字符串基本操作

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

返回字符串s中首次出现字符c位置的指针,否则返回NULL

扩展:找到出现字符c的下标

char s[] = “abca”;

char *ptr = strchr(s, ‘a’);

index i = ptr - s; //下标

while((ptr = strchr(ptr+1, ‘a’) != NULL){

       i= ptr – s;

}

 

int strncmp(const char *str1, const char*str2, size_t n)

比较字符串str1和str2前面最多的n个字节(‘\0’结束比较),返回(大于、小于、等于)0。

 

char *strncpy(char *dest, const char *src,size_t n)

将src的前n个字符复制到dest中,不足补齐’\0’

扩展:求出任意子串

char *p = strchr(s, ‘a’);

char buf[10], s[] = “abcd”;

strncpy(buf, s+(p-s), 2);

printf("%d %s\n", strlen(buf),buf); //2, ab

 

size_t strlen(const char *str)

返回str的非空字符的个数,空字符不计算在内

 

char *strtok(char *str, const char *delim)

按照delim分割符,如“-+|”,解析字符串str,str必须可变,因为strtok每次返回一个片段时都会将分割符置为’\0’。

扩展:按照delim分割提取子串

char buf[] = “123+456-789”

char *delim = “+|- ”;

char *token = strtok(buf, delim);

while(token != NULL){

       token= strtok(NULL, delim);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值