用指针实现拷贝字符串功能

来源:百度知道 编辑:UC知道 时间:2024/05/30 23:55:15
//下列程序把字符串从s[]拷贝到d[]中

#include<iostream.h>
void main()
{
void func(char *s,char *d);
char s[]="abcd";
char d[]="hijk";
func(s,d);
}
void func(char *s,char *d )
{

cout<<"操作前:"<<"s="<<s<<" "<<"d="<<d<<endl;
while(*s!=NULL)
{
*d++=*s++;
}
cout<<"操作后:"<<"s="<<s<<" "<<"d="<<d<<endl;
}

为什么执行后输出的都是空字符串呢?怎么改才能正确的执行呢?

#include<iostream>
using namespace std;

void main()
{
void func(char *s,char *d);
char s[]="abcd";
char d[]="hijk";
func(s,d);
}
void func(char *s,char *d )
{

cout<<"操作前:"<<"s="<<s<<" "<<"d="<<d<<endl;
int i = 0;
while(*(s+i)!=NULL)
{
*(d+i)=*(s+i);
i++;
}
cout<<"操作后:"<<"s="<<s<<" "<<"d="<<d<<endl;
}

因为你的d和s都递增了,当你执行完循环的时候,s和d都已经指向了NULL,即指向了'\0',即字符串的最后一个成员了,你说输出当然是空的啦,
我给你修改了下,看看是你要的吗?呵呵。

while(s!=NULL)

#include<iostream.h>
void main()
{
void func(char *s,char *d);
char s[]="abcd";
char d[]="hijk";

cout<<"操作前:"<<"s="<&l