实现mystrcpy(), mystrcmp(), mystrcat(), mystrlen()

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

/*
	mystrcpy:
	复制字符串from 中的字符到字符串to,
	包括空值结束符。
*/

/*
	mystrcmp:
	比较字符串str1 and str2
	返回值			解释
	less than 0		str1 is less than str2

	equal to 0		str1 is equal to str2

	greater than 0	str1 is greater than str2
*/

/*
	mystrcat:
	函数将字符串str2 连接到str1的末端
*/

/*
	mystrlen:
	函数返回字符串str 的长度( 即空值结束符之前字符数目)。
*/

void mystrcpy(char *to, const char *from);
int mystrcmp(const char *str1, const char *str2);
void mystrcat(char *str1, const char *str2);
size_t mystrlen(char *str);

int main(){
	char str1[20] = "abcdfg";
	char str2[] = "abcde";
	//mystrcat(str1,str2);
	//mystrcpy(str1,str2);
	printf("%d\n",mystrlen(str1));
	system("pause");
	return 0;
}

void mystrcpy(char *to, const char *from){
	assert((to != NULL) && (from != NULL));
	while ((*to++ = *from++) != ‘\0‘);
	*to = ‘\0‘;
}

int mystrcmp(const char *str1, const char *str2){
	assert((str1 != NULL) && (str2 != NULL));
	for (; (*str1) && (*str2) && (*str1 == *str2);++ str1,++ str2);
	return (*str1 - *str2);
}

void mystrcat(char *str1, const char *str2){
	assert((str1!=NULL) && (str2!=NULL));
	char* ret = str1;
	for (; *str1 != ‘\0‘; ++str1);
	while ((*str1++ = *str2++) != ‘\0‘);
}

size_t mystrlen(char *str){
	assert(str != NULL);
	size_t length = 0;
	for (; *str++ != ‘\0‘;length ++);
	return length;
}

  

时间: 2024-08-27 19:35:35

实现mystrcpy(), mystrcmp(), mystrcat(), mystrlen()的相关文章

自己实现C++的string类

使用C++的朋友对string类都不会陌生,string类使用起来很是方便,比C的字符数组好用多了,但是我们能不能自己实现一个属于自己的string类呢? 实现一个具有基本功能的string类并不难,但是还是得掌握以下几点知识:构造函数.析构函数.运算符重载.指针.引用等等. 我自己实现了一个string类,一来是想用自己学的知识做一些有实际作用的东西,二则使用自己的东西也很有成就感,现在给大家作为参考,有错误或者不合理的地方欢迎大家指正. 为了区别标准库中的string类和相关标识符,我的类名

实现一个同strcpy功能相同的函数mystrcpy

#include<stdio.h> char *mystrcpy(char *s1,char*s2) { char *p=s1; while(*s2!='\0') { *s1++=*s2++; } *s1='\0'; return p; } int main() { char a[20]="welcome to anyang"; char b[20]=""; printf("%s\n",mystrcpy(b,a)); return 0

计算一个字符串的长度,mystrlen

#include<stdio.h> int mystrlen(char *p) { int size = 0; if(!p)//如果是空指针 return -1; while(*p) { p++; size++; } return size; } int main() { char *s; char c[20]; s=c; gets(c); printf("len=%d\n",mystrlen(s)); return 0; } 版权声明:本文为博主原创文章,未经博主允许不得

mystrcmp

#include <stdio.h> int mystrcmp(const char *str1,const char * str2) { int ret = 0; while(1) { ret = *str1 - *str2; if((ret != 0)||(*str1 == '\0')) { break; } str1++; str2++; } return ret; } int main() { char str1[100] = {'\0'}; char str2[100] = {'\0

mystrlen

#include <stdio.h> int mystrlen(const char *str) { int n=0; const char *p = str; while(*p++ != '\0') { n++; } return n; } int main() { char str1[100] = {'\0'}; int ret = 0; puts("please intput string ,the string length max = 99"); puts(&qu

mystrcat

#include <stdio.h> char * strcat(char *strDest,const char * strSrc) { char *r=strDest; char *p=strDest; while(*p++ != '\0'); p--; while(*strSrc != '\0') { *p++ = *strSrc++; } *p = '\0'; return r; } int main() { char str1[100] = {'\0'}; char str2[100

自定义方法实现strcpy,strlen, strcat, strcmp函数,了解及实现原理

unsigned long myStrlen(char string[]) {     unsigned long length = 0;          while (string[length] != '\0') {         length++;     }          return length; } void myStrcpy(char string1[], char string2[]) {     int i = 0;     while (string2[i] !=

[c/c++] programming之路(23)、字符串(四)——strncat,atoi,strcmp,strlen等,以及常用内存函数

一.strncat及自行封装实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> //<string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. //<cstring>是C++版本的<string.h> //<string>定义了一个string的字符串类,包含

string系列函数实现

;string系列函数 int main(int argc, char* argv[]){ char str1[100]="hello"; char str2[100]="helloChina"; char str3[100]="heool"; //int len=myStrLen((char *)&str1); //myStrCpy((char *)&str2,(char *)&str1); //myStrCat((ch