This is my second problem today, pointers are giving me nightmares .
I’m trying to make a program that do the same thing that strcpy() function do..
Once i try it..it crashes and i’m 100% sure that’s a pointers issue in my code. I think because there is some sort of an unintiallized pointer(*copied) ..But i’ve assigned NULL to it …so can anybody tell me what’s Null assignment is exactly for ? because i think i misunderstand its use. and tell me please what corrections can be made to the program to run normally .
#include <iostream>
using namespace std;
void mycpy(char *b , char *a);
int main()
{
char *original = "this is a text" ;
char *copied = 0 ;
mycpy(copied , original);
for(int i = 0 ; *(copied+i) ;i++) cout << *(copied+i) ;
return 0;
}
void mycpy(char *b , char *a){
for(int i = 0 ; *(a+i) ; i++) *(b+i) = *(a+i);
}
Thanks in advance .
Well, your
mycpyis almost right (although you could’ve used brackets instead of arithmetic, i.e.a[i]instead of*(a+1)). In order to print the copied string correctly, the last character must be zero, but the last one is not copied by your function. So it should rather be likeFurthermore the variable
doesn’t point to valid memory, so you’re reading from memory position 0 which is illegal. You could define the variable as array