output problem in file

i am trying to copy data from one file to another using fread & fwrite.the problem is the number of bytes to be read in the argument of fread & fwrite, which is the 2nd one.
fread (*buffer,number of bytes,numbers of objects,FILE *fp);
this is my code-
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp,*fp1;
char *p;
fp=fopen (“a.txt”,“rb”);
fp1=fopen (“b.txt”,“wb”);
while (1)
{
fread (p,sizeof§,1,fp);
if (feof (fp)) break;
printf §;
fwrite (p,sizeof§,1,fp1);
}

fclose (fp);
fclose (fp1);

}
the problem is with fread. if i specify 1/2 bytes, the output is exactly the same. if i use 4 bytes, which is the size of *p,according to my compiler, the sample output is-
input: christiano ronaldo
output: chri stia no r onal
it writes 4 characters, then some spaces are written. why’s that?