Eliminación consecutiva de espacios en blanco en C

Un archivo de texto contiene un montón de caracteres. No hay caracteres de tabulación dentro del archivo. Escriba un progtwig que reemplace dos o más espacios en blanco consecutivos por un solo espacio en blanco. La entrada de este progtwig debe provenir de un archivo cuyo nombre se haya proporcionado a través de argv [1]. La salida de este progtwig debe ir a la salida estándar.

Entrada:

Let's go to the movies. 

Salida:

 Let's go to the movies. 

Esto es lo que tengo hasta ahora:

 #include  int main(int argc, char* argv[]){ char line; FILE* fin; int i=0; fin=fopen("textfile38", "r"); fscanf(fin,"%c",&line); while((i<=line || line ==' ')); { if(line !=' ') { putchar(line); i=i+1; } else { putchar(' '); } while(line == ' ') { i=i+1; } } printf("%c \n", getchar()); getchar(); return 0; } 

No me da una salida. No estoy seguro de lo que hice mal si alguien pudiera ayudarme, NO solo darme la respuesta que sería genial, gracias.

Esto podría ayudarte a progresar:
Parece que solo lees un caracter antes del bucle while. Es posible que desee leer los caracteres continuamente dentro del bucle while y detener el bucle cuando se llega al final del archivo.

Segunda pista:
Dejas el archivo abierto. ¿Qué debes hacer antes de salir de tu progtwig?