C语言str函数系列
2018-03-23 19:52
127 查看
常常见到面试时让写str系列函数,用的少,经常忘记,记录一下。
{
char* addr=dest;
while(*dest)//找到'\0'
{
dest++;
};
while(*dest++=*src++)
{};
return addr;
}
当str1指向的字符串小于str2指向的字符串时,返回负数。
实现如下:[cpp] view plain copyint strcmp(const char *str1, const char *str2)
{
while(*str1==*str2)
{
if(*str1=='\0')
return 0;
str1++;
str2++;
}
return *str1-*str2;
}
{
//assert(dest!=NULL&&src!=NULL);
char *addr=dest;
while(*dest++=*src++);
return addr;
}
{
unsigned len=0;
while(*str!='\0')
{
len++;
str++;
}
return len;
}
{
while(*str!='\0'&&*str!=c)
{
str++;
}
return (*str==c? str: NULL);
}
char *strrchr(char *str, char c)功能为查找str中最后一次出现c的位置,如有有,则返回出现位置,否则返回NULL。实现如下:[cpp] view plain copychar *strrchr(char *str, char c)
{
char *p=str+strlen(str);//p指向最后一个字符
while(p!=str&&*p!=c)
p--;
if(p==str&&*p!=c)
return NULL;
else return p;
}
{
char *p=NULL;
if(str&&(p=(char*)malloc(strlen(str)+1)))
strcpy(p,str);
return p;
{
if(str==NULL)
return NULL;
char *start=str;
char *end=str+strlen(str)-1;
char temp;
while(start<end)
{
temp=*start;
*start=*end;
*end=temp;
start++;
end--;
}
return str;
}
{
int length1=strlen(str1);
int length2=strlen(str2);
while(length1>=length2)
{
length1--;
if(!strncpy(str1,str2,length2))//比较前n个字符串,类似strcpy
return str1;
str1++;
}
return NULL;
}
1、strcat()
此函数原型为 char *strcat(char *dest, const char *src).功能为连接两个字符串,把src连接到dest后面;返回dest地址实现如下[cpp] view plain copychar * strcat(char *dest,const char *src){
char* addr=dest;
while(*dest)//找到'\0'
{
dest++;
};
while(*dest++=*src++)
{};
return addr;
}
2、strcmp()
此函数的函数原型为 int strcmp(const char *str1, const char *str2).功能为比较两个字符串。当str1指向的字符串大于str2指向的字符串时,返回正数。当str1指向的字符串等于str2指向的字符串时,返回0。当str1指向的字符串小于str2指向的字符串时,返回负数。
实现如下:[cpp] view plain copyint strcmp(const char *str1, const char *str2)
{
while(*str1==*str2)
{
if(*str1=='\0')
return 0;
str1++;
str2++;
}
return *str1-*str2;
}
3、strcpy()
此函数原型为 char *strcpy(char* dest, const char *src)功能为拷贝字符串内容到目的串,把src所指向的内容拷贝到dest实现如下[cpp] view plain copychar *strcpy(char *dest,const char *src){
//assert(dest!=NULL&&src!=NULL);
char *addr=dest;
while(*dest++=*src++);
return addr;
}
4、strlen()
此函数原型为unsigned in strlen(const char *str)功能为返回字符串str的长度(不包括'\0')。实现如下:[cpp] view plain copyunsigned int strlen(const char *str){
unsigned len=0;
while(*str!='\0')
{
len++;
str++;
}
return len;
}
5、strchr() strrchr()
char *strchr(char *str, char c)功能为查找str中首次出现c的位置,如有有,则返回出现位置,否则返回NULL。实现如下:[cpp] view plain copychar *strchr(char *str, char c){
while(*str!='\0'&&*str!=c)
{
str++;
}
return (*str==c? str: NULL);
}
char *strrchr(char *str, char c)功能为查找str中最后一次出现c的位置,如有有,则返回出现位置,否则返回NULL。实现如下:[cpp] view plain copychar *strrchr(char *str, char c)
{
char *p=str+strlen(str);//p指向最后一个字符
while(p!=str&&*p!=c)
p--;
if(p==str&&*p!=c)
return NULL;
else return p;
}
6、strcspn() strspn()
strcspn原型:size_t strcspn(const char *pstr, const char *strCharset)MSDN解释为:在字符串pstr中搜寻strCharsret中所出现的字符,返回strCharset中出现的第一个字符在pstr中的出现位置。简单的说,若strcspn返回的数值为n,则代表字符串strCharsrt开头连续有n个字符不包含在pstr内的字符。实现十分巧妙,在http://blog.csdn.net/chenyu2202863/article/details/5293941原型size_t strspn(const char *pstr, const char *strCharset)功能:返回后面字符串中第一个不在前者出现的下表。7、strdup()
此函数原型为char *strdup(const char *str)功能为拷贝字符串到新建的内存,返回内存指针。若失败,返回NULL。要注意,返回的指针指向的内存在堆中,所以要手动释放。函数实现:[cpp] view plain copychar *strdup(const char *str){
char *p=NULL;
if(str&&(p=(char*)malloc(strlen(str)+1)))
strcpy(p,str);
return p;
8、strrev()
此函数的原型为char *strrev(char *str)功能为反转字符串,返回字符串指针。函数实现:[cpp] view plain copychar *strrev(char *str){
if(str==NULL)
return NULL;
char *start=str;
char *end=str+strlen(str)-1;
char temp;
while(start<end)
{
temp=*start;
*start=*end;
*end=temp;
start++;
end--;
}
return str;
}
9、strstr()
函数原型为char *strstr(const char str1, const char *str2)功能为查找字符串str2在str1中出现的位置,找到则返回位置,否则返回NULL。函数实现:[cpp] view plain copychar *strstr(const char str1, const char *str2){
int length1=strlen(str1);
int length2=strlen(str2);
while(length1>=length2)
{
length1--;
if(!strncpy(str1,str2,length2))//比较前n个字符串,类似strcpy
return str1;
str1++;
}
return NULL;
}
相关文章推荐
- C语言str函数系列总结
- C语言str函数系列
- C语言str函数系列
- C语言str函数系列
- C语言str函数系列
- 【面试算法系列】逆序输出一个单链表 - C语言实现
- C语言系列-c,c++,c#,java关键字概述及解析
- C语言系列之-----入门
- 自学iOS开发系列----C语言(指针及递归函数)
- c语言解析系列(5)指针
- 数据结构C语言实现系列——队列
- 哈希表系列:初探哈希,c语言实现
- 2005年华为招聘--C语言笔试试题--招聘试题系列(一)
- 数据结构C语言实现系列——线性表
- C语言str系列库函数
- C语言递归算法系列_ 逆序和正序输出一个整数的每位数 (1)
- C语言str系列库函数之strtok()
- 海量数据处理系列——C语言下实现bitmap算法
- C语言系列(四):最近重拾C语言的想法,谈到C中易错点,难点;以及开源代码中C语言的一些常用技巧,以及如何利用define、typedef、const等写健壮的C程序
- 【我解C语言面试题系列】002 局部变量和全局变量小结?