C语言中有没有1个用来判断 一个文件是否存在的函数解决思路

C语言中有没有1个用来判断 一个文件是否存在的函数
在C语言中有没有用来判断1个文件是否存在的函数?
除了用fopen( "* ", "r ")的方法外还有其他办法么?     用fopen( "* ", "r ")   会出错~
我的程序  
                    if(fp2=fopen(filename[2], "r ")==NULL)
                    {
                      fclose(fp2);
                      fp=fopen(filename[2], "a+ ");
                      fputs( "ZCZC   325\n ",fp);
                      fclose(fp);
                    }
                 
                  fp=fopen(filename[2], "a+ ");
                  fprintf.................
目的是当文件不存在是创建文件并输出ZCZC   325   若存在则输出其他的数据
这个程序如果执行   小的数据可以执行但执行大型数据的时候执行不完   屏幕上输出了Nullpointer   assignment

------解决方案--------------------
if(fp2=fopen(filename[2], "r ")==NULL)
{
//! fclose(fp2); //这是不能close 一个Null 文件指针,注释掉就可以了!
fp=fopen(filename[2], "a+ ");
fputs( "ZCZC 325\n ",fp);
fclose(fp);
}


------解决方案--------------------
仍然可以用fopen来判断:

FIlE* fp;
fp = fopen(__FILENAME__, "r+ ");

if (!fp)
{
// fp == NULL
// when fp is null, you shouldn 't release the file pointer fp;
}
else
{
// fp != NULL
}