c语言中部分限制字符函数的实现strncmp,strncat,strncpy,strstr,strrstr
2017-07-29 00:56
429 查看
1、带限制的字符串比较函数的实现
#include<stdio.h>
int my_strncmp(char *p, char *q, int n)
{
int count = 0;
while ((*p == *q)&&(count < n))
{
*p++;
*q++;
count++;
}
if (*p == *q)
{
return 0;
}
else
{
return (*p-*q);
}
}
int main()
{
char a[] = "abcdef";
char b[] = "abchkhkhk";
int ret = strncmp(a, b, 4);
/*int ret = my_strncmp(a,b,4);*/
if (ret == 0)
{
printf("a和b相等");
}
else if (ret > 0)
{
printf("a比b大");
}
else
{
printf("a比b小");
}
return 0;
}
2、带限制的字符串追加函数的实现
#include <stdio.h>
void my_strncat(char *p, const char *q,int n)
{
int count = 0;
while (*p)
{
*p++;
}
while ((*p++ = *q++)&&(count < n-1))
{
count++;
}
}
int main()
{
char a[30] = "hello ";
char b[] = "abcdefghijklmnopqrstuvwxyz";
int i = 0;
my_strncat(a, b, 5);
printf("%s",a);
return 0;
}
3、带限制的字符串拷贝函数的实现
#include <stdio.h>
void my_strncpy(char *p, char *q, int n)
{
int count = 0;
while ((*p++ = *q++)&&(count < n-1))
{
count++;
}
}
int main()
{
char a[20] = "abcdeilajdkfjkl";
char b[] = "fghijsdfsdfsdfses";
my_strncpy( a, b, 4);
printf("%s",a);
return 0;
}
4、在字符串中找第一次出现的子串
#include<stdio.h>
#include <string.h>
char *my_strchr(const char* p, const char *q)
{
while ((*p)&&(*p != *q))
{
*p++;
}
while (*p == *q)
{
*p++;
*q++;
}
if (*q=='\0')
{
return (char*)p;
}
return NULL;
}
int main()
{
char a[] = "theworldisverybeautiful";
char *p = my_strchr(a, "world");
printf("%s",p);
return 0;
}
5、在字符串中找最后一次出现的子串
#include<stdio.h>
char *my_strrchr(const char *p, const char *q)
{
char *start = NULL;
char *last = (char*)p;
int i = 0;
while (*p && *q)
{
start = (char*)p;
while((p)&&(q[i])&&(*p == q[i]))
{
p++;
i++;
}
if (q[i] == '\0')
{
last = start;
}
p = start + 1;
i = 0;
}
if (*p == '\0')
{
return last;
}
else
{
return NULL;
}
}
int main()
{
char a[] = "hashdhyshuhysahhhyshkhyshnkhjk";
char *p = my_strrchr(a, "ys");
printf("%s",p);
return 0;
}
#include<stdio.h>
int my_strncmp(char *p, char *q, int n)
{
int count = 0;
while ((*p == *q)&&(count < n))
{
*p++;
*q++;
count++;
}
if (*p == *q)
{
return 0;
}
else
{
return (*p-*q);
}
}
int main()
{
char a[] = "abcdef";
char b[] = "abchkhkhk";
int ret = strncmp(a, b, 4);
/*int ret = my_strncmp(a,b,4);*/
if (ret == 0)
{
printf("a和b相等");
}
else if (ret > 0)
{
printf("a比b大");
}
else
{
printf("a比b小");
}
return 0;
}
2、带限制的字符串追加函数的实现
#include <stdio.h>
void my_strncat(char *p, const char *q,int n)
{
int count = 0;
while (*p)
{
*p++;
}
while ((*p++ = *q++)&&(count < n-1))
{
count++;
}
}
int main()
{
char a[30] = "hello ";
char b[] = "abcdefghijklmnopqrstuvwxyz";
int i = 0;
my_strncat(a, b, 5);
printf("%s",a);
return 0;
}
3、带限制的字符串拷贝函数的实现
#include <stdio.h>
void my_strncpy(char *p, char *q, int n)
{
int count = 0;
while ((*p++ = *q++)&&(count < n-1))
{
count++;
}
}
int main()
{
char a[20] = "abcdeilajdkfjkl";
char b[] = "fghijsdfsdfsdfses";
my_strncpy( a, b, 4);
printf("%s",a);
return 0;
}
4、在字符串中找第一次出现的子串
#include<stdio.h>
#include <string.h>
char *my_strchr(const char* p, const char *q)
{
while ((*p)&&(*p != *q))
{
*p++;
}
while (*p == *q)
{
*p++;
*q++;
}
if (*q=='\0')
{
return (char*)p;
}
return NULL;
}
int main()
{
char a[] = "theworldisverybeautiful";
char *p = my_strchr(a, "world");
printf("%s",p);
return 0;
}
5、在字符串中找最后一次出现的子串
#include<stdio.h>
char *my_strrchr(const char *p, const char *q)
{
char *start = NULL;
char *last = (char*)p;
int i = 0;
while (*p && *q)
{
start = (char*)p;
while((p)&&(q[i])&&(*p == q[i]))
{
p++;
i++;
}
if (q[i] == '\0')
{
last = start;
}
p = start + 1;
i = 0;
}
if (*p == '\0')
{
return last;
}
else
{
return NULL;
}
}
int main()
{
char a[] = "hashdhyshuhysahhhyshkhyshnkhjk";
char *p = my_strrchr(a, "ys");
printf("%s",p);
return 0;
}
相关文章推荐
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- [C语言]模拟实现strcpy/strncpy/strcat/strncat/strcmp/strncmp/strstr
- 模拟实现C库函数strncpy、strncat、strncmp
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- strlen(),strcpy(),strncpy(),strcat(),strncat(),strcmp(),strncmp()等函数的实现
- 【C语言】 实现strncpy,strncat,strncmp
- 模拟实现长度受限制的字符串函数(strncpy、strncat、strncmp)
- 模拟实现C库函数:strncpy、strncat和strncmp
- C语言模拟实现strncpy、strncpy、strncat、strstr和strrstr函数实现
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- [置顶] 【C语言】 实现strncpy,strncat,strncmp
- 【C语言】模拟实现strncpy、strncat、strncmp函数
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- 【C语言】实现一个函数,可以左旋字符串中的k个字符。
- 模拟实现//strcpy //strncpy //strcat //strncat //strcmp //strncmp //memcpy //memmove
- C语言strncat函数的实现
- C语言部分函数原型实现
- 【C语言】【笔试题】【面试题】实现一个函数,可以左旋字符串中的k个字符
- C语言:实现一个函数,可以左旋字符串中的k个字符。
- my_strstr()函数;my_strrstr()函数的实现