c笔记——字符串处理
2014-06-26 16:18
92 查看
涉及一些常用的字符串处理函数的特点和用法;
#include<stdio.h> #include<stdlib.h> #include<string.h> int main(){ //1.复制函数 //所有的复制函数返回值为第一个参数,即目的指针; //memcpy从源向目的复制n个字符(第三个参数),如过源和目的内存有重叠,行为未定义 //memmove与memcpy功能一样,区别:当源和目的重叠时可以正常工作 //strcpy 将一个以空字符结尾的字符串从源复制到目的(必须有空字符,否则会持续复制) //strncpy 与strcpy类似,不会复制多于n个字符(第三个参数),如果n太小,可能无法复制源结尾的空字符;如果遇到源字符中 //的空字符,会向目的不断追加空字符,直到写满n个为止。strcpy和strncpy在有内存重叠的情况下未定义 char *des=(char*)malloc(10); des[9]='\0';//如果des[9]不赋0,strlen(des)不等于9 char *src="davemustbeaboy!"; memcpy(des,src,strlen(des)); printf("%s\n",des);//des is :davemustb\0 memmove(des,src,strlen(des)); //一个例子说明一切 char source[]={'z','h','a','\0','o','d','a'}; char dest[7]; memcpy(dest,source,3);//z,h,a memcpy(des,source,4);//z,h,a,\0 memcpy(des,source,7);//z,h,z,\0,o,d,a memmove(dest,source,3);//z,h,a memmove(des,source,4);//z,h,a,\0 memmove(des,source,7);//z,h,a,\0,o,d,a strcpy(des,source);//z,h,a strncpy(des,source,3);//z,h,a strncpy(des,source,4);//z,h,a,\0 strncpy(des,source,7);//z,h,z,\0,\0,\0,\0 /***************************************/ //2.拼接函数 //strcat将第二个参数追加到第一个参数的末尾,两个参数都必须是空字符结尾的字符串 //strncat有第三个参数限制复制字符的个数 char des1[9]="zhao"; char *src1="dawei";//这两种定义有本质的不同,前者是字符数组用常量来初始化,后者是一个指向字符串常量的指针 //des1[8]='a'; //src1[2]='i';//前者可操作,而后者不可以,因为src1指向只读存储区 //strcat(des1,src1); printf("%p\n",strncat(des1,src1,4));//这里输出的是des1的地址 /***************************************/ //3、比较函数 //memcmp();strcmp();strncmp() 前两个参数都是要比较字符串的指针,memcmp()和strncmp()有第三个参数n,指定要比较的个数 //memcmp和strncmp不同之处在于前者不关心空字符,而后者遇到空字符或者比较到n个就停止比较; //strcmp当任意一个字符串结束时,停止比较(被比较的字符串要有结束符) //例子: char s1[]={'b','i','g','\0','c','a','t'}; char s2[]={'b','i','g','\0','c','a','r'}; int n=sizeof(s1);//n=7 int m=strlen(s1);//m=3,strlen遇到\0就停止计算 printf("%s\n",s1);//printf也是,输出为big printf("%d\n",memcmp(s1,s2,3));//0 printf("%d\n",memcmp(s1,s2,4));//0 printf("%d\n",memcmp(s1,s2,7));//1 忽略中间的'\0','t'>'r',s1>s2 printf("%d\n",strcmp(s1,s2));//0 比较到'\0'就结束,所以相等 printf("%d\n",strncmp(s1,s2,3));//0 printf("%d\n",strncmp(s1,s2,4));//0 printf("%d\n",strncmp(s1,s2,7));//0 比较到'\0'结束 /***************************************/ //3.查找函数 //strchr 在有空字符结尾的字符串中搜索指定字符(如果确定字符在字符串中,字符串可以不用\0结束) //memchr 搜索内存块指定范围内存区域,不需要以空字符结束 //strrchr 和strchr类似,但反向搜索 //其他的一些搜索函数不多做解释 char *p; char sch[]="davemustbeaboy"; char memch[14]={'d','a','v','e','m','u','s','t','b','e','a','b','o','y'}; p=strchr(sch,'a');//p指向第一个'a'字符 p=strchr(p+1,'a');//p指向第二个'a'字符 p=(char*)memchr(memch,'a',sizeof(memch)); //4.其他函数(非标准库) strrev(sch);//反转 strset(sch,'a');//填充 strlwr(sch);//大写字母转换成小写字母,其他不变 stricmp(s1,s2);//不考虑大小写的 strcmp char *cp=strdup(sch);//相当于malloc一个区域,存储sch,cp指向该区域 printf("%s",cp); return 0; }
相关文章推荐
- ABAP学习笔记--处理字符串
- C#学习笔记-字符串处理
- 黑马程序员--学习笔记--String类与字符串处理技术
- python 学习笔记(4)解析和字符串处理
- .NET/Dot Net学习笔记---.net理解,C#.net的基本类型,字符串转义字符处理..
- C# 学习笔记 -- 第四天 处理字符串
- Python字符串处理(版本2.7)-学习笔记
- PHP学习笔记之字符串的简单处理
- Java基础笔记05-字符串处理(String类常用用法)
- 备战考研算法笔记(一) 字符串处理
- Groovy笔记(4)_字符串处理
- 数据访问技术系列课程 笔记(3) 处理连接字符串的安全性
- WINDOWS核心编程学习笔记--字符串处理
- 学习php笔记 字符串处理
- iOS开发笔记--NSString字符串处理
- 学习笔记之C#parm、命名空间、字符串处理
- 内核编程笔记(一、内核字符串处理)
- 字符串处理 笔记
- C# 字符串处理总结笔记
- C++字符串处理函数学习笔记