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
答案 0 :(得分:4)
您正在更改destination
。当您拨打puts
时,destination
不再指向您所期望的位置。它指向字符串的末尾,为\0
。
试试这个:
char *original = destination;
/* while etc. */
puts(original);
答案 1 :(得分:1)
在函数my_strcpy
中,局部变量destination
发生变化,并在puts(destination)
执行时指向字符串的结尾。因此它什么都不输出。