Enunciado

Vas a hacer un programa que lea un archivo de texto cuyo nombre se le dará por teclado (si el fichero no existe, abortará con un mensaje de error) y presente en pantalla la cantidad de caracteres (letras, cifras, signos de puntuación, etc.) distintos que tiene.
Supongamos que el archivo fuese el chiquitín éste:
Este archivo sólo tiene dos líneas y esta es la primera
Y esta es la segunda y última
Entonces los caracteres distintos (mayúscula y minúscula son distintas; con acento y sin él también son distintas) los podemos sacar quitando los que se van repitiendo, y son: Este archivoólndíypm\nYguú (\n es por el salto de línea, que también es un carácter), o sea, que salen 25.

Asegúrate que entiendes el enunciado antes de continuar.

Resolución

Vamos a empezar por una versión 0 que simplemente abre el fichero que se le pide. El programa podría seguir el siguiente esqueleto:

#include ...
#include ...
#define NOMBMAYOR 50

void main() {
.... nombre ....
..... fichero;

printf("Nombre del fichero a abrir: ");
scanf.....
fichero=fopen.....
assert(...!=NULL);
}

Copia el esquema en el entorno de programación los puntos suspensivos indican huecos que rellenarás más adelante con ayuda del sistema. Cuando ya lo tengas copiado, pasa a la siguiente pregunta.

¿Qué va en los dos primeros includes?
<stdio.h> y <assert.h>
<stdio.h> y "assert.h"
"stdio.h" y "assert.h"
<stdio.h> y <string.h>