A cópia do nome do arquivo para o buffer temporário não está errada, mas ela é desnecessária. Você pode trabalhar diretamente com argv[2] (o nome do arquivo de entrada), desde que argc seja maior que 2. Não há problema algum em passar argv[2] como parâmetro para fopen.
Fórum