C言語で複数のファイルを開くときのエラー処理
C言語で複数のファイルを開いて使う処理を書く場合、
エラー処理はどのように書くのがきれいでしょうか。
以下のような形を考えましたが、2つ目のファイルオープンで
エラーになったときの処理が気持ち悪いです。
int func1(char *fname1, char *fname2)
{
FILE *fp1;
FILE *fp2;
if((fp1 = fopen(fname1, "w")) == NULL)
{
fprintf(stderr, "fname1 open error.\n");
return -1;
}
if((fp2 = fopen(fname2, "w")) == NULL)
{
fprintf(stderr, "fname2 open error.\n");
fclose(fp1); //ここが気持ち悪い
return -1;
}
int ret;
ret = func2(fp1, fp2); //ファイルに書き込む処理
fclose(fp1);
fclose(fp2);
if(ret != 0)
{
fprintf(stderr, "error occured in func2.\n");
return -1;
}
return 0;
}