为什么my_strcpy函数中的puts不会在下面给出的代码中打印值?

时间:2012-02-24 09:51:19

标签: c++ string pointers

my_strcpy()函数中的puts也应该按照我打印,但为什么不打印,我无法理解。

#include<stdio.h>
#include<iostream.h>

void my_strcpy(char *source,char *destination);

int main()
{
  char strA[]="\nMy Name is Jagdeep\n";
  char strB[30];
  char *pA,*pB;
  pA=strA;
  pB=strB;
  my_strcpy(pA,pB);
  puts(pA);
  //puts(strB);

  return 0;
}


//function to copy strings 


void my_strcpy(char *source,char *destination)
{
  while(*source!='\0')
  {
    *destination++=*source++;
  }
  *destination='\0';
  cout<<"\t You are in str_mycopy";
  puts(destination);

}

上面代码的输出是:

You are in strmycopy

My Name is Jagdeep

2 个答案:

答案 0 :(得分:4)

您正在更改destination。当您拨打puts时,destination不再指向您所期望的位置。它指向字符串的末尾,为\0

试试这个:

char *original = destination;

/* while etc. */

puts(original);

答案 1 :(得分:1)

在函数my_strcpy中,局部变量destination发生变化,并在puts(destination)执行时指向字符串的结尾。因此它什么都不输出。