您的位置:首页 > 其它

模拟实现 strncpy strncat strncmp strchr strrchr 函数

2017-07-18 15:56 246 查看
1、模拟实现strncpy函数

从第一个字符开始把src复制到dest里面去,如果src的长度大于n,则只复制前n个字符,如果src的长度小于n,则把src复制完后其余的全服复制成'\0'

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
void my_strncpy(char* dest, const char* src, int n)
{
int i;
int count = n;
for (i = 0; i < n; i++)
*dest++ = *src++;
}
int main()
{
char arr[20] = { 34 };
my_strncpy(arr, "hello world!", 7);//指定复制n个字符
printf("%s ", arr);
system("pause");
return 0;
}
2、模拟实现strncat函数

追加复制,把src的内容复制到dest的'\0'处,复制n个字符,若n<src,则只复制前n个字符,若n>src,则其余部分为全零
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
void my_strncat(char*dest,const char* src,int n)
{
while (*dest++)
{
;
}
*dest--;
int i;
for (i = 0; i < n; i++)
{
*dest++ = *src++;
}
}
int main()
{
char arr[30] = { "hello " };
my_strncat(arr, "world!", 7);
printf("%s", arr);
system("pause");
return 0;
}
3、模拟实现strncmp函数

从第一个字符开始进行字符串比较,如果str是dest的子字符串则返回0,如果第一个str小于dest则返回-1,反之则返回1
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
int my_strncmp(char*src, char*dest, int n)
{
while (*dest)
{
if ((*src - *dest) == 0)
{
src++;
dest++;
}
else if ((*src - *dest) > 0)
{
return 1;
}
else
return -1;
}
return 0;
}
int main()
{
int ret = my_strncmp("fbcdef", "aabcdef",5);
printf("%d ", ret);
system("pause");
return 0;
}4、模拟实现strchr函数
寻找字符第一次出现的位置并打印剩下的字符串
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include<string.h>
char* my_strchr(char*dest, char src)
{
while (*dest)
{
if (*dest == src)
{
return dest;
}
else
dest++;
}
return NULL;
}
int main()
{
printf("%s ",my_strchr("abcdef", 'g'));
system("pause");
return 0;
}

5、模拟实现strrchr函数
找出字符最后一次出现的位置并打印剩下的字符串

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include<string.h>
char* my_strrchr(char*dest, char src)
{
int count = 0;
while (*dest++)
{
count++;
}
dest--;
while (count--)
{
if (*dest == src)
{
return dest;
}
else
dest--;
}
return NULL;
}
int main()
{
printf("%s ",my_strrchr("abecdef", 'e'));
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  模拟实现 strncpy strnc