strcpy,strcat, strcmp, atoi, itoa函数原型实现

strcpy:/*********************** C语言标准库函数strcpy的一种典型的工业级的最简实现* 返回值:* 返回目标串的地址。* 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。* 参数:* strDeatination* 目标串* strSource* 源串***********************/VERSION 1:char *strcpy(char *strDestination, const char *strSource);{assert(strDestination && strSource);char *cp=strDestination;while(*cp++ = *strSource++); return strDestination;}VERSION 2:char*strcpy(char*dst,constchar*src) { char*cp=dst; while(*cp++=*src++) ;/*Copysrcoverdst*/ return(dst); }VERSION 3:char *srcpy(char *dest,const char *source){assert((dest!=NULL)&&(source!=NULL));char *address = dest;while(*source!=’\0′){*dest++=*source++;}*dest = ‘\0’;return address;} strcat:VERSION 1:char * strcat(char * dest, const char * src) { char *tmp = dest; while (*dest) dest++; while ((*dest++ = *src++) != ‘\0’) ; return tmp; }

strcat()函数不调用C++/C 的字符串库函数,请编写函数 strcatVC源码:char * __cdecl strcat (char * dst, const char * src){char * cp = dst;while( *cp )cp++; /* find end of dst */while( *cp++ = *src++ ) ; /* Copy src to end of dst */return( dst ); /* return dst */}strcat()接受两个字符串参数。将第二个字符串的一份拷贝添加到第一个字符串的结尾,,从而使第一个字符串成为一个新的组合字符串,第二个字符串不改变。

strcmp:VERSION 1:intstrcmp(constchar*src,constchar*dst) { intret=0; while(!(ret=*(unsignedchar*)src-*(unsignedchar*)dst)&&*dst) ++src,++dst; if(ret<0) ret=-1; elseif(ret>0) ret=1; return(ret); } VERSION 2:int strcmp(const char *dest, const char *source) { assert((NULL != dest) && (NULL != source)); while (*dest && *source && (*dest == *source)) { dest ++; source ++; } return *dest – *source; /*如果dest > source,则返回值大于0,如果dest = source,则返回值等于0,如果dest < source ,则返回值小于0。*/ } VERSION 3:int strcmp(char *source, char *dest){assert(source != NULL && dest != NULL);while(*source++==*dest++){if(*source==’\0’&&*dest==’\0′)return 0; }return -1;}itoa:#include "stdafx.h"#include <iostream>using namespace std;void itoa(int num,char str[] ){int sign = num,i = 0,j = 0;char temp[11];if(sign<0)//判断是否是一个负数{num = -num;};do{temp[i] = num%10+’0′; num/=10;i++;}while(num>0);if(sign<0){temp[i++] = ‘-‘;//对于负数,要加以负号}temp[i] = ‘\0’;i–;while(i>=0)//反向操作{str[j] = temp[i];j++;i–;}str[j] = ‘\0’;}atoi:int atoi(char s[]){int i = 0,sum = 0,sign; //输入的数前面可能还有空格或制表符应加判断while(‘ ‘==s[i]||’\t’==s[i]){i++;}sign = (‘-‘==s[i])?-1:1;if(‘-‘==s[i]||’+’==s[i]){i++;}while(s[i]!=’\0’){sum = s[i]-‘0’+sum*10;i++;} return sign*sum;}

做对的事情比把事情做对重要。

strcpy,strcat, strcmp, atoi, itoa函数原型实现

相关文章:

你感兴趣的文章:

标签云: