C语言模拟实现strncpy、strcat

来源:互联网 发布:sql中values什么意思 编辑:程序博客网 时间:2024/05/16 14:49

   模拟实现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;}

运行结果如图:


实现程序功能方法有多种,不一定非得要死板的模仿哪一种方法,而是自己慢慢地去探索。


0 0
原创粉丝点击