Почему функция put in my_strcpy не печатает значение в приведенном ниже коде? - PullRequest
0 голосов
/ 24 февраля 2012

Функция put в my_strcpy () также должна печатать в соответствии со мной, но почему она не печатается, я не могу понять.

#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 ]

4 голосов
/ 24 февраля 2012

Вы меняете destination.К тому времени, когда вы звоните puts, destination больше не указывает, где вы ожидаете.Он указывает на конец строки, на \0.

Попробуйте это:

char *original = destination;

/* while etc. */

puts(original);
1 голос
/ 24 февраля 2012

В функции my_strcpy локальная переменная destination изменяется и указывает на конец строки при выполнении puts(destination).Таким образом, он ничего не выводит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...