您的位置:首页 > 编程语言 > C语言/C++

C语言模拟实现strncpy、strcat

2017-01-09 21:36 543 查看
   模拟实现strncpy

先演示一下strncpy的效果:

代码如下:

#include <string.h>
#include <stdio.h>

void main(void)
{
char string[100] = "Cats are nice usually";
printf("Before: %s\n", string);
strncpy(string, "Dogs", 4);
strncpy(string + 9, "funn", 4);
printf("After:  %s\n", string);
system("pause");
}

运行结果:



        通过以上演示可以看出,strncpy实现的是用一个固定的字符串去替换原字符串中的某段字符,可以设置一个循环,来实现字符的替换,如果它只有一个字符要替换,则循环执行一次,设置一个循环判断语句即可,循环次数等于要替换的字符数。

程序代码如下:

#include <Windows.h>
#include <string.h>
#include <stdio.h>
#include <assert.h>
char *mystrncpy(char *strDest, const char *strSource, size_t count)
{
assert(strDest);
assert(strSource);
while (count--)
{
*strDest++ = *strSource++;
}
return strDest;
}
void main(void)
{
char string[100] = "Cats are nice usually";
printf("Before: %s\n", string);
mystrncpy(string, "Dogs", 4);
mystrncpy(string + 9, "hola", 4);
printf("After:  %s\n", string);
system("pause");
return 0;
}




           模拟实现strcat,程序代码如下:

#include <Windows.h>
#include <string.h>
#include <stdio.h>
#include <assert.h>
char *mystrcat(char *strDest, const char *strSource)
{
int len = strlen(strDest);
assert(strDest);
assert(strSource);
char *ret = strDest;
char *newstrDest = strDest + len;    //新接的字符串开始位置
while (*strSource)
{
*newstrDest++ = *strSource++;      //把要加的字符串一个一个copy过去
}
return ret;
}
int main()
{
char string[120];
strcpy(string, "Hello world from ");
strcat(string, "strcpy ");
strcat(string, "and ");
strcat(string, "strcat haha!");
printf("String = %s\n", string);
system("pause");
return 0;
}

运行结果如图:



实现程序功能方法有多种,不一定非得要死板的模仿哪一种方法,而是自己慢慢地去探索。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: