>> *fp АРХИВА
>> АРХИВ *fp2
Почему не сделать что блок FILE*?
FILE* fp [20] = {0};
>> file1
>> file2
>> file3
Почему не использовать sprintf (или что-то подобное)?
сгорите filename [64] = "";
sprintf (filename, «file%d», индекс);
где «индексом» будет число архива (1, 2, etc.)