读取文件的第一行解决方法

读取文件的第一行
新手求教

在一个文件的第一行,写有另一个文件的文件名,现在想读出来这个文件名并使用该文件名,我这样写代码可以吗?


……
File *file1;
File *file2;

char s[256];

file1=fopen("XXX.XXX","r+");//打开这个文件
file2=fopen(fgets(s,256,file1),"r+");//读取文件的第一行,并使用

……


编译能够通过,可是在运行的时候报错:
Debug Assertion Failed!
……
File:fgets.c
Line:60

Expression:str !=Null
……

这是怎么回事呢?读取并引用文件第一行不应该使用fgets 吗?

------解决方案--------------------
我对上面的说法做了一个测试, 先简历两个文件一个path.txt 里面记录要打开的文件的名字test.c 
首先fp1 = fopen("path.txt", "r"); 这个是打开成功的。
然后fp2 = fopen(fgets(s, 256, fp1), "r"); 这个时候就会打开失败。
如果是fp2 = fopen(fgets(s, 7, fp1), "r");这个时候就能打开成功。 我猜测 是应为fgets 将\n 也读进了 buf 这样导致的打开失败
------解决方案--------------------
真相是fgets返回的字符串末尾多了一个'\n'
fp1 = fopen("path.txt", "r");
fgets(s, 256, fp1);
if ('\n'==s[strlen(s)-1]) s[strlen(s)-1]=0;//去掉s末尾的'\n'
fp2 = fopen(s, "r");