各位,帮帮忙啊如何解决文件打不开就跳出程序的有关问题

各位,帮帮忙啊,怎么解决文件打不开就跳出程序的问题
我写了一个函数,作用是假定我有个文件名列表,里面有两个不同格式的文件名,想把他俩分别拷贝,我想当一个打不开时,就打开另一个在进行拷贝,但是每当文件打不开,它就直接跳出程序,不往下运行了,我想知道怎么解决
void copy(char x[66],char y[66],char z[25]) 
{
int c;
FILE *fp1,*fp2,*fp3;

fp1=fopen(x,"rb");
fp2=fopen(y,"rb");
fp3=fopen(z,"wb");

if(fp3==NULL) printf("Can't open file3\n");

if(fp1==NULL) 
{   printf("Can't open file1\n");
   if(fp2==NULL)  printf("Can't open file2\n");
     while((c=fgetc(fp2))!=EOF)
 {fputc(c,fp3);}
}
else
{
while((c=fgetc(fp1))!=EOF)
{fputc(c,fp3);}
}

fclose(fp1);
fclose(fp2);
fclose(fp3);
}

 
 

------解决方案--------------------
void copy(char x[66],char y[66],char z[25]) 
{
int c;
FILE *fp1,*fp2,*fp3;

fp1=fopen(x,"rb");
fp2=fopen(y,"rb");
fp3=fopen(z,"wb");

if(fp3 == NULL) 
printf("Can't open file3\n");

if(fp1 == NULL) 
{   
printf("Can't open file1\n");

if(fp2 == NULL)    
{
printf("Can't open file2\n");
return;  //直接return
}

while((c=fgetc(fp2))!=EOF) //这里 fp2 != null
{
fputc(c,fp3);
}
}
else
{
while((c=fgetc(fp1))!=EOF)
{
fputc(c,fp3);
}
}


// fclose(fp1);  
// fclose(fp2);
// fclose(fp3);
//}