Well, there's a lot of strange things going on in your code.
Code:
while(fgets(line,19,fin)!=NULL) {/* while begins*/
for(i=0;i<2;i++)
{
strcpy(destination[i],source[i]);/*this is where I mess up*/
fputs(source,fout);
}
for(i=0;i<19;i++)
fputs(destnation[i],fout);}
For each line you're reading that line gets copied into the two buffers of destination and the line gets written to fout two times. After that destination seems to be storing 19 buffers instead of 2 and those two buffers plus the mysterious potentially segfaulting 17 others gets written to fout.
There are other way than strcpy but they don't differ much and strcpy doesn't seem to be your problem.
[edit]
I need to get my ass to school so let's get down to brass tacks, I think you want something like this.
Code:
for (i = 0; i < 2; i++) {
if (fgets(source, 20, fin) != NULL) {
strcpy(destination[i], source);
fputs(source, fout);
}
else {
//errors
}
}
You can also skip the use of source entirely by reading directly into destination e.g. fgets(destination[i], 20, fin)