《C和指针》第九章 字符串、字符和字节
来源:互联网 发布:视频格式转换软件下载 编辑:程序博客网 时间:2024/06/04 04:26
1.头文件string.h包含了使用字符串函数所需的原型和声明,字符串都是以‘\0’结尾
2.字符串长度 strlen函数 原型:size_t strlen(char const *str) (做到自己可以编写出来实现)
int strlen (char const *str){int len=0;assert(str!=NULL);while(*str++!='\0')len++;return len;}
3.不受限制的字符串函数:(结束都是靠'\0'控制,程序员必须保证目标字符数组的空间足够容纳)
复制字符串strcpy 原型:char *strcpy (char *des, char const *src);实现把参数src的字符串复制到des参数,返回第一个参数的一份拷贝(做到自己可以编写出来)
char *strcpy (char *des,char const *src){assert((des!=NULL)&&(src!=NULL));if(des==src)return des;char *add=des;while((*des++=*src++)!='\0');return add;}
连接字符串 strcat 原型:char *strcat (char *des, char const *src);实现把src字符串的一份拷贝添加在des包含的字符串的末端,返回值同上(做到可以自己编写出来)
char *strcat(char *des,char const *src){assert((des!=NULL)&&(src!=NULL));char *add=des;while(*des!='\0')des++;while((*des++=*src++)!='\0');return add;}
字符串比较 strcmp 原型:int strcmp (char const *s1,char const *s2);如果s1小于s2,返回一个小于0的值。大于s2,返回一个大于0的值,等于s2,返回0(自己可以编写)
int strcmp(char const *s1,char const *s2){assert(s1!=NULL&&s2!=NULL);while((*s1==*s2)&&*s1!='\0'&&*s2!='\0'){s1++;s2++;}return (*s1-*s2);}4.长度受限的字符串:(结束是依靠第三个参数)
char *strncpy (char *des, char const *src, size_t len);
char *strncpy(char *des,char const *src, int count){assert((sed!=NULL)&&(src!=NULL));char *add=des;while((count--)&&*src!='\0')*des++=*src++;*des='\0';return add;}
char *strncat (char *des, char const *src, size_t len);
<pre name="code" class="cpp">char *strncat(char *des,char const *src, int count){assert(des!=NULL&&src!=NULL);char *add=des;while(*des!='\0')des++;while(count--&&(*src)!='\0'){src++;des++;}*des='\0';return add;}int strncmp (char const *s1, char const *s2, size_t len);
int strncmp(char const*s1,char const *s2,int count){assert(s1!=NULL&&s2!=NULL);while(count--&&(*s1==*s2)&&*s1&&*s2){s1++;s2++;}return (*s1-*s2);}
5.字符串查找基础
查找一个字符 char *strchr (char const *str,int ch);作用:查找字符在字符串中第一次出现的位置,并返回该位置
char *strchr(char const *str,int ch){aseert(str!=NUll);for(;*str!=(char)ch;++str)if(*str=='\0')return NULL;return str;}
查找一个字符 char *strrchr(char const *str, int ch);作用:查找字符在字符串中最后一次出现的位置,并返回该位置
char *strrchr(char const *str, int ch){assert(str!=NULL);char *s=str;while(*s!='\0')++s;for(--s;*s!=(char)ch;--s)if(s==str) return NULL;return s;}
查找任何几个字符 char *strpbrk(char const *str,char const *group);作用:查找group中任何一个字符在str中出现的位置。也就是这个函数返回一个指向str中第一个匹配group中任意一个字符的字符位置
char *strpbrk(char const *str,char const *group){assert((str!=NULL)&&(group!=NULL));while(*str!='\0'){char *s=group;while(*s!='\0'){if(*s==*str)return str;s++;}str++;}return NULL;}
查找一个子串 char *strstr(char const *s1,char const *s2);作用:查找s1中第一次完整出现s2的起始位置,并返回该位置,如果没有完整的s2,返回一个NULL,s2是空字符串就返回s1;
char *strstr(char const *s1,char const *s2){assert((s1!=NULL)&&(s2!=NULL));while(*s1!='\0'){char *p1=s1;char *s=s2;for(;(*s==*p1)&&*s!='\0';s++,p1++);if(*s=='\0')return s1;}return NULL;}
6.高级字符串查找
查找一个字符串的前缀
size_t strspn(char const *str,char const *group) 作用:用于返回str起始部分匹配group中任意字符的字符数
int strspn(char const *str,char const *group){assert((str!=NULL)&&(group!=NULL));char *s=str;char *t=group;while(*s!='\0'){t=group;while(*t!='\0'){if(*s==*t)break;elset++;}if(*t=='\0')return (s-str);s++;}return 0;}
size_t strcspn(char const *str,char const *group) 作用:用于返回str起始部分中不与group中任意字符匹配的字符个数
int strcspn(char const *str,char const *group){assert((str!=NULL)&&(group!=NULL));char *s=str;char *t;while(*s!='\0'){t=group;while(*t!='\0'){if(*t==*s)return (s-str);t++;}s++;}return 0;}
查找标记 char *strtok(char *str, char const *sep)(木有看明白)
7.字符操作
字符转换 int tolower(int ch)(将大写字母转换成小写字母)和 int toupper(int ch);(将小写字母转换成大写字母)
8.内存操作:由于前面所讲到的带str或者strn开头的函数遇到‘\0’就会停止操作,为了防止这种情况采用另外一组相关函数,第三个参数是要指定复制值的长度(以字节为单位)
void *memcpy(void *des,void const *src,size_t length);void *memmove(void *des,void const *src,size_t length);void *memcmp(void const *des,void const *src,size_t length);void *memchr(void const *des,int ch,size_t length);void *memcset(void *des,int ch,size_t length);
- 第九章 字符串、字符和字节[C和指针]
- 《C和指针》第九章 字符串、字符和字节
- C和指针 第九章 字符串和字节
- 【C】【笔记】《C和指针》 第六章 指针 第七章 函数 第八章 数组 第九章 字符串、字符和字节
- 第九章:字符串、字符和字节
- c和指针 -- 字符串、字符、字节
- C和指针读书笔记——字符串、字符和字节
- c和指针(6)字符串、字符和 字节篇
- 第九章——字符串、字符和字节
- 【C】字符串,字符和字节(C与指针第9章)
- 《C和指针》学习笔记五/数组、字符串字符和字节/
- 【c基础】字符串、字符和字节
- 字符串,字符和字节
- 字符串,字符和字节
- C和指针--第九章_问题
- C和指针读书笔记(第九章)
- C语言学习之字符串、字符和字节第一讲
- C语言学习之字符串、字符和字节第二讲
- Coursera公开课Functional Programming Principles in Scala习题解答:Week 3
- QT TableView
- MATLAB Preparing installation files ... Installing ... Exception in thread "main" com.google.inject.
- 嵌入式系统开发实用教程
- Storyboard里面的几种Segue区别及视图的切换
- 《C和指针》第九章 字符串、字符和字节
- [LeetCode] Merge Sorted Array
- linux僵死进程与并发服务器编程
- 斐波那契数列的递归实现
- 我的第二个HelloWorld
- Linux、标准C、C++、QT中对文件I/的操作
- 目前流行的Bug缺陷管理工具
- Light OJ 1234 Harmonic Number 调和级数部分和
- 添加组件