У тебя скорее всего после чтения из файла названия следуюшего файла в конце затесались символы перевода строки. Их нужно очистить. Вот так у меня работает:
#include <stdio.h>
#define PATHLEN 255
int main() {
FILE * dir2File;
FILE * dir1File;
dir2File = fopen ("dir2.txt","r");
if (dir2File!=NULL) {
char namebuf[PATHLEN];
fgets(namebuf, PATHLEN, dir2File);
int beg=0;
while(namebuf[beg] != '\n' && namebuf[beg] != 0 && namebuf[beg] != '\r') beg++;
namebuf[beg]=0;
dir1File = fopen (namebuf,"r");
if (dir1File!=NULL) {
fgets(namebuf, PATHLEN, dir1File);
printf("%s\n", namebuf);
fclose(dir1File);
}
fclose (dir2File);
}
return 0;
}