copy函数
#include <stdio.h>
#include <string.h>
/*
copy函数
*/
int main()
{
char ar[50]="good morning";
char br[50];
char *p=NULL;
puts(ar);
p=strcpy(br,ar);
puts(br);
int i;
for(i=0;i<4;i++)//验证strcpy返回目标的首地址
{
br[12+i]='a'+i;
}
br[12+i]='\0';
puts(p);
puts(br);
char cr[50];
strncpy(cr,ar,6);//只copy前6个 不包含'\0'
cr[6]='\0';
puts(cr);
return 0;
}
拼接函数
#include <stdio.h>
#include <string.h>
/*
拼接函数
*/
int main()
{
char s1[100]="strcat teat ";
char s2[]="strcat02 to strcat01";
puts(s1);
puts(s2);
strcat(s1,s2);
printf("追加后s1的内容:%s\n",s1);
puts(s1);
strncat(s1,s2,8);//不需要加'\0'
puts(s1);
return 0;
}
比较函数
#include <stdio.h>
#include <string.h>
/*
比较函数
*/
int main()
{
char s1[]="bigbigbig";
char s2[]="small";
char s3[]="bigbigbig";
int n;
n=strcmp(s2,s1);//s2首位大于s1首位
printf("%d\n",n);//1
n=strcmp(s1,s2);
printf("%d\n",n);//-1
n=strcmp(s1,s3);
printf("%d\n",n);//0
n=strncmp(s1,s3,6);//只比较前6个字符
return 0;
}
切割函数
#include <stdio.h>
#include <string.h>
/*
切割函数
*/
int main()
{
char s1[]="shan you mu xi mu you zhi";
char *p;
puts(s1);
p=strtok(s1," ");//首次切割需要传入切割的字符串
puts(s1);
puts(p);
p=strtok(NULL," ");//二次和多次切割时需要传入NULL 直到p=NULL(空)就切完了
puts(p);
return 0;
}
查找函数
#include <stdio.h>
#include <string.h>
/*
查找函数
*/
int main()
{
char *s1="xin yue jun xi jun bu zhi";
char *p=NULL;
char *s2="big";
p=strchr(s1,'b');/*参数1是需要查找的字符串,参数2是需要查找的字符 返回值是
参数2 的位置地址 */
printf("找到字符'b'在字符串的地址后的内容%s\n",p);
p=strrchr(s1,'j');//反向查找
printf("找到字符'j'在字符串的地址后的内容%s\n",p);
p=strchr(s1,'j');//正向查找
printf("找到字符'j'在字符串的地址后的内容%s\n",p);
p=strpbrk(s1,s2);
printf("字符串s2在s1中查找地址后的内容%s\n",p);//s2各个字符优先级平等,先找到谁就停止
p=strstr(s1,s2);//全字查找
printf("字符串s2在s1中查找地址后的内容%s\n",p);
int n=0;
n=strcspn(s1,s2);
printf("s2中任意字符在s1中首次出现不包含该字符前面的字符数量%d\n",n);
n=strspn(s1,s2);//s2中任意字符在s1中没出现的首个字符下标
printf("不存在的字符下标%d\n",n);
return 0;
}
结果
找到字符'b'在字符串的地址后的内容bu zhi
找到字符'j'在字符串的地址后的内容jun bu zhi
找到字符'j'在字符串的地址后的内容jun xi jun bu zhi
字符串s2在s1中查找地址后的内容in yue jun xi jun bu zhi
字符串s2在s1中查找地址后的内容(null)
s2中任意字符在s1中首次出现不包含该字符前面的字符数量1
不存在的字符下标0
--------------------------------
Process exited after 0.02787 seconds with return value 0
请按任意键继续. . .
字符串长度和大小写转换
#include <stdio.h>
#include <string.h>
int main()
{
char num[100]="chi mei wang liang";
int n=0;
n=strlen(num);
printf("num字符串的长度(字符数量):%d\n",n);
n=sizeof(num)/sizeof(char);
printf("数组开辟的空间大小:%d\n",n);
char *p;
puts(num);
p=strupr(num);//小写转大写
puts(num);
p=strlwr(num);//大写转小写
puts(num);
return 0;
}
结果
num字符串的长度(字符数量):18
数组开辟的空间大小:100
chi mei wang liang
CHI MEI WANG LIANG
chi mei wang liang
--------------------------------
Process exited after 0.04046 seconds with return value 0
请按任意键继续. . .
字符串转数值
#include <stdio.h>
#include <stdlib.h>
int main()
{
char num[50]="6666666666";
double n=0;
n=atof(num);//纯数字字符串转换成数值 int——atoi long——atol double——atof
printf("%f\n",n);
char s1[]="16s";
char *p=NULL;
int i;
i=strtod(s1,&p);//strtod——int strtol——long(数组,&指针,基数) strtoul——无符号long
//参数1指向要转换的字符串,参数二指向不能被转换的整个字符串的地址
printf("s1不能被转换的字符串%s\n",p);
printf("%d\n",i);
i=strtol(s1,&p,16);//基数是该字符串代表的进制
printf("%d\n",i);
return 0;
}
结果
6666666666.000000
s1不能被转换的字符串s
20
32
--------------------------------
Process exited after 0.03934 seconds with return value 0
请按任意键继续. . .