1.拷贝函数
介绍:C语言标准库函数strcpy,把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间;
原型声明:char *strcpy(char* dest, const char *src);
头文件:#include <string.h> 和 #include <stdio.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串,返回指向dest的指针;
#include "string.h"
#include "stdio.h"
int main(){
char a[]="hello";
char b[]="world";
char c[10];
strcpy(c,a);
printf("%s\n",c);
strcpy(c,b);
printf("%s\n",c);
return 0;
}
输出结果为:
从中可以看出,首先,strcpy的第二个参数应该为常量字符串,然后呢,*src字符串覆盖掉了,*dest前面的字符串,所以最后输出的只有*src的字符串,还要啊,这是个void型函数,没有返回值的哦!
2.拼接函数
原型:extern char *strcat(char *dest,char *src);
头文件: #include <string.h> 和 #include <stdio.h>
功能把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')。
说明src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
#include "string.h"
#include "stdio.h"
int main(){
char a[]="hello";
char b[]="world";
//char c[10]="tttttt";
strcat(a,b);
printf("%s\n",a);
return 0;
}
3.字符串长度函数
原型:unsigned int strlen(const char *s)
头文件: #include <string.h> 和 #include <stdio.h>
Get the length of a string, using the current locale or a specified locale.
计算字符串s的(unsigned int型)长度,不包括'\0'在内。返回 s 的长度,不包括结束符NULL。
strlen和sizeof()的区别:
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
而sizeof()返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen是函数。
注意:strlen后面只能接char *,且必须是以'\0'结尾的,不能求出 int *类型的长度;
4.比较字符串函数
原型:int strcmp(const char *s1,const char * s2);
#include<string.h>
Compare strings.
< 0 :s1 less than s2
= 0 : s1 identical s2
> 0 : s1 greater than s2
两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。这里面只能比较字符串,不能比较数字等其他形式的参数。
#include "string.h"
#include "stdio.h"
int main(){
int n;
char a[]="hello";
char b[]="world";
char c[]="hello";
char d[]="helloworld";
n=strcmp(a,b);
printf("strcmp(a,b)=%d\n",n);
n=strcmp(a,c);
printf("strcmp(a,c)=%d\n",n);
n=strcmp(a,d);
printf("strcmp(a,d)=%d\n",n);
return 0;
}
strcmp(a,b)=-1
strcmp(a,c)=0
strcmp(a,d)=-1
5.查找字符函数
原型: char *strchr(const char *s,char c);
#include<string.h>
查找字符串s中首次出现字符c的位置,返回首次出现c的位置的指针,如果s中不存在c则返回NULL。
The strchr function finds the first occurrence of c instr, or it returns NULL ifc is not found. The null terminating character is included in the search.
常用玩法:查找出某个字符,用指针变量存储返回值,再用 *p,将其替换成其他有用的字符~
#include "string.h"
#include "stdio.h"
int main(){
char a[]="helloworld";
char *p ;
p=strchr(a,'l');
*p='\0';
printf("%s",a);
return 0;
}
与之对应的函数:
原型:char *strrchr(const char *str, char c);
#include<string.h>
找一个字符c在另一个字符串str中末次出现的位置(也就是从str的右侧开始查找字符c首次出现的位置),并返回从字符串中的这个位置起,一直到字符串结束的所有字符。如果未能找到指定字符,那么函数将返回NULL。
#include "string.h"
#include "stdio.h"
int main(){
char a[]="helloworld";
char *p ;
p=strrchr(a,'l');
*p='\0';
printf("%s",a);
return 0;
}
6.查找子字符串函数
原型:char *strstr(const char *str1, const char *str2);
#include<string.h>
找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。返回该位置的指针,如找不到,返回空指针;
#include "string.h"
#include "stdio.h"
int main(){
char a[]="helloworld";
char b[]="low" ;
char *p;
p=strstr(a,b);
*p='\0';
printf("%s",a);
return 0;
}
7.查找未出现字符
原型: size_t strspn (const char *s,const char * accept);
#include<string.h>
strspn返回 s 中第一个不在accept中出现的字符下标。,返回的是一个整型!
#include "string.h"
#include "stdio.h"
int main(){
char a[]="hey";
char b[]="hello";
int p=strspn(a,b);
printf("%d",p);
return 0;
}
8.选择字符个数复制
原型:char * strncpy(char *dest, char *src, size_t n);
#include<string.h>
功能:将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样只有遇到NULL才停止复制,而是多了一个条件停止,就是说如果复制到第n个字符还未遇到NULL,也一样停止),返回指向dest的指针。
#include "string.h"
#include "stdio.h"
int main(){
char a[]="hey";
char b[]="hello";
strncpy(a,b,3);
printf("%s",a);
return 0;
}
9.选择字符个数进行拼接
原型: char *strncat(char *dest,const char *src,int n);
#include<string.h>
功能:把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
#include "string.h"
#include "stdio.h"
int main(){
char a[]="hey";
char b[]="hello";
strncat(a,b,3);
printf("%s",a);
return 0;
}