字符数组和字符串是有区别的:
char s1[] = "yzl";s1是一个字符数组,是个局部变量。
char *s2 = "yzl";s2是一个字符串,是个全局变量,且字符串是只读的,有些对字符数组的操作,对字符串来说是行不通的,如下面的
字符数组拼接fun(),而字符串必须要用fun2(); 字符数组的拷贝yzlstrcpy();
#include <iostream>
using namespace std;
char * fun(char* str1,char *str2)
{//实现两个字符数组的拼接
char *r = str1;
while(*(str1++)!='\0');
str1--;
while((*(str1++)=*(str2++))!='\0');
return r;
}
char * fun2(char* str1,char *str2)
{//两个字符串的拼接,返回一个新的字符串
int i = 0;
while(*(str1+i)!='\0')
{
i++;
}
int k = 0;
while(*(str2+k)!='\0')
{
k++;
}
char *p = new char[i+k+1];
int j=0;
while(*str1!='\0')
p[j++]=*(str1++);
while(*str2!='\0')
p[j++]=*(str2++);
p[j]='\0';
return str1=p;
}
char * yzlstrcpy(char * strDest,const char * strSrc)
{//一个字符数组拷贝到另一个字符数组
if ((strDest==NULL)||(strSrc==NULL))
cout<< "Invalid argument(s)"<<endl;
char * strDestCopy=strDest;
while ((*strDest++=*strSrc++)!='\0');
return strDestCopy;
}
int main()
{
char s1[] = "yzl";
char s2[] = "hehe";
char *s= fun2(s1,s2);
cout << s<<endl;
char *ss=yzlstrcpy(s1,s2);
cout << ss<<endl;
system("pause");
return 0;
}