C++字符串库函数——strcat,strcmp,strlen,itoa
C++字符串库函数——strcat,strcmp,strlen,itoa
#include<iostream> #include<assert.h> using namespace std; char *strcat(char * strDest,const char *strSrc) { char *address=strDest; assert((strDest!=NULL)&&(strSrc!=NULL)); while(*strDest) strDest++; while(*strDest++=*strSrc++) { NULL; } return address; } int strcmp (const char *str1,const char *str2) { int len = 0; assert((str1 != '\0') && (str2 != '\0')); while(*str1 && *str2 && (*str1 == *str2)) { str1++; str2++; } return *str1-*str2; } int mystrlen(const char *str) { int len = 0; assert(str != NULL); while(*str++) { len++; } return len; } char *itoa(int num,char *str,int radix) { /* 索引表 */ char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; unsigned unum; /* 中间变量 */ int i=0,j,k; /* 确定unum的值 */ if(radix==10&&num<0) /* 十进制负数 */ { unum=(unsigned)-num; str[i++]='-';} else unum=(unsigned)num; /* 其他情况 */ /* 逆序 */ do { str[i++]=index[unum%(unsigned)radix]; unum/=radix; }while(unum); str[i]='\0'; /* 转换 */ if(str[0]=='-') k=1; /* 十进制负数 */ else k=0; /* 将原来的“/2”改为“/2.0”,保证当num在16~255之间,radix等于16时,也能得到正确结果 */ char temp; for(j=k;j<=(i-k-1)/2.0;j++) { temp=str[j]; str[j]=str[i-j-1]; str[i-j-1]=temp; } return str; } int main() { char s1[50],s2[50]; int n; while(cin>>s1>>s2) { cout<<strcat(s1,s2)<<endl; cout<<strcmp(s1,s2)<<endl; cout<<mystrlen(s1)<<' '<<mystrlen(s2)<<endl; cin>>n; cout<<itoa(n,s1,16)<<' '<<itoa(n,s2,8)<<endl; } return 0; }