Te lo modifico con algunos comentarios, espero que te sirva
Código:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char cadena[80];
char *p;
printf("Introduzca una cadena a cambiar:");
// no te sirve ignora los espacios.
// scanf("%c", &cadena);
// no es necesario pasar la variable con &
// el nombre del arreglo es de por sí una
// dirección de memoria.
// fgets lee de una línea la cantidad
// de caracteres -1
fgets(cadena,80,stdin);
// por defecto fgets toma el salto de línea
// asi que debemos limpiarlo.
if((p = strchr(cadena, '\n')) != NULL)
*p = '\0';
p = cadena;
while (*p != '\0') {
if (*p == ' ') *p = '-';
p++;
}
printf( "La cadena queda: \"%s\" \n", cadena );
system("Pause");
}