用c++写strcat函数。
编写一个函数char * str_cat(const char * s1,const char * s2);它带有两个串参数,并返回一个串,该串是两个串参数的合并,要求用new分配结果串的存储。这里有个字符的复制函数void Assign(char* to,const char * from) { while (*to++ = *from++) ;}不是很明白这里的while的运行原理。望各位大牛赐教。
追问:来自手机问问那能不能以while (*to++ = *from++) ;这种形式来做。我的意思是不使用strlen以及string里的函数。
答案:#include <stdio.h>
#include<string.h>char *str_cat(const char *s1,const char *s2)
{
char *p=NULL,*p1=NULL;
if(!s1 || !s2)
return NULL;
p1=p=new char[strlen(s1)+strlen(s2)+1];
if(!p)
return NULL;
while(*p++=*s1++);
--p;
while(*p++=*s2++);
return p1;
}
void main( )
{
char *p1="hello ";
char *p2="world";
char *p=NULL;
if(p=str_cat(p1,p2))
{
printf("%s\n",p);
delete[] p;
p=NULL;
}
}
函数实现如上
while (*to++ = *from++) ;是实现一个个字节赋值 先给to这指针所指向的地址赋值 然后判断给赋值的数是否为0字符 如果是 则 再两个指针自加一 然后退出循环 否则也是两个指针自加一继续循环。
这里的*to = *from 是永远成立的然后执行条空语句。相当与while(1){*to = *from;}.而到做后一个结束符”\0”时,*to的结果 变为0,因而不再满足条件。我这么理解。
就是往后拼字符就行了
上一个:C++图书管理系统
下一个:简单c++函数问题