1、strcpy(字符串复制)使用范例:
(把s2的内容复制给s1)
#include<iostream>
#include<string>
using namespace std;
int main()
{
char s1[]="abc";
char s2[]="ab";
strcpy(s1,s2);
cout<<s1<<endl; //s1="ab"
cout<<s2<<endl; //s2="ab"
return 0;
}
2、strncpy(字符串部分复制)
(把s2的前n个字符覆盖s1的前n个字符)
使用范例
#include<iostream>
#include<string>
using namespace std;
int main()
{
char a[]="bb";
char b[]="abc";
strncpy(a,b,2);
cout<<a<<endl; //a="ab"
cout<<b<<endl; //b="abc"
return 0;
}
(把s2中内容连接到s1中,s2保持不变)
使用范例
#include<iostream>
#include<string>
using namespace std;
int main()
{
char s1[]="ab";
char s2[]="cde";
strcat(s1,s2);
cout<<s1<<endl; //s1="abcde"
cout<<s2<<endl; //s2="cde"
return 0;
}
(将s2中前n个字符连接到s1中)
使用范例
#include<iostream>
#include<string>
using namespace std;
int main()
{
char a[]="ab";
char b[]="cdef";
strncat(a,b,3);
cout<<a<<endl; //a="abcde"
cout<<b<<endl; //b="cdef"
return 0;
}
5、strcspn(在给定字符串中搜寻某个指定字符第一次出现的位置)
搜索s.r中第一个相同的字符,并返回这个字符在s中的位置
使用范例
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
int main()
{
char *s="Golden ok";
char *r="end";
char *h="uu";
int n,d;
n=strcspn(s,r);
d=strcspn(s,h);
cout<<n<<endl; //n=3
printf("The first char both in s1 and s2 is: %c\n",s[n]); //s[n]=d
cout<<d<<endl; //d=9=strlen(s)
printf("The first char both in s1 and s2 is: %c",s[d]); //无输出
getchar();
return 0;
}
6、strrchr
查找一个字符c在另一个字符串str中末次出现的位置(也就是从str的右侧开始查找字符c首次出现的位置),并返回从字符串中的这个位置起,一直到字符串结束的所有字符。如果未能找到指定字符,那么函数将返回NULL。
#include <string.h>
#include <stdio.h>
int main(void)
{
char string[20];
char *ptr, c = 'e';
strcpy(string, "There are two rings");
ptr = strrchr(string, c);
if (ptr)
printf("The character %c is at position: %s\n", c, ptr); //The character e is at position:e are two rings
else
printf("The character was not found\n"); //没找到
return 0;
}
依次检验字符串s1中的字符,当被检验字符在字符串s2中也包含时,则停止检验,并返回该字符位置,空字符NULL不包括在内。
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
main()
{
char *s1="Weicome To Beijing";
char *s2="BiT";
char *p;
p=strpbrk(s1,s2);
if(p)
printf("%s\n",p); // 输出:icome To Beijing
else
printf("Not Found!\n");
p=strpbrk(s1, "Da");
if(p)
printf("%s",p);
else
printf("Not Found!"); //输出:Not Found!
return 0;
}
在字符串s中寻找与l相匹配的子字符串,
#include<stdio.h>
#include <string.h>
main()
{
char *s="Golden Golobal View";
char *l="ol";
char *p;
p=strstr(s,l);
if(p)
printf("%s\n",p); //输出:olden Golobal View
else
printf("Not Found!\n");
return 0;
}
s>l输出1,s=l输出0, s<l输出-1
#include<stdio.h>
#include <string.h>
#include<iostream>
using namespace std;
int main()
{
char *s="ac";
char *l="ab";
int k=strcmp(s,l);
cout<<k<<endl; //此种情况下k=1;
return 0;
}
10、_strdup
strdup()在内部调用了malloc()为变量分配内存,不需要使用返回的字符串时,需要用free()释放相应的内存空间,否则会造成内存泄漏
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
int main()
{
char *s="Golden Global View";
char *d;
d=_strdup(s);
printf("%s",d); //Golden Global View
free(d);
getchar();
return 0;
}
#include <string.h>
#include <stdio.h>
int main(void)
{
char string[17];
char *ptr, c = 'r';
strcpy(string, "This is a string");
ptr = strchr(string, c);
if (ptr)
printf("The character %c is at position: %d\n", c, ptr-string); //ptr-string=12
else
printf("The character was not found\n");
return 0;
}
#include <stdio.h>
#include <string.h>
int main(void)
{
char string[55] = "Tsinghua";
char letter = 'x';
printf("string before strnset: %s\n", string); //string="Tsinghua"
strnset(string, letter, 3);
printf("string after strnset: %s\n", string); //string="xxxnghua"
return 0;
}