当前位置:编程学习 > C/C++ >>

用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++函数问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,