Hola! tenes algunos errores:
1º A la variable opc, al principio no la inicializas por lo que en la condicion del while siempre va a ser falso
2º Ademas de darle un valor a opc, la condicion esta mal formulada para lo que queres hacer. Tiene que ser:
si vos pones opc==2 solo va a salir cuando ingreses algo distinto de 2
3º Supongamos que el archivo no se pudo abrir, entonces no va a entrar al primer if sino que va a ir al else y se va a imprimir el mensaje de error. El problema esta en que vos en ese else pones fclose(archivo); intentas cerrar algo q no se pudo abrir, por lo tanto el compilador te va a tirar un error, lo cual no es muy lindo :P.. Sacalo d ahi
Saludos