The next bug is at line 15 -- feof() doesn't work the way you think. Instead, you should code it like this (which will only work with text files. binary files are coded differently because the EOF character could be a valid character in the file.):
while( (ch=fgetc(fp)) != EOF)
{
fputc(ch,ft);
}
Another bug: failing to check that the two files were successfully opened. If the source file in argv[1] doesn't exist then no point attempting go open the output file and copy. And if the output file can not be created pointer ft will be NULL and the copy loop will fail causing segment violation.