Il problema sta nel fatto che lo spazio viene interpretato come valore tappo (\0), come diceva Cesco90;
Un metodo per ovviare questo inconveniente, volendo inserire una stringa che contenga anche spazi, può essere la lettura da tastiera carattere per carattere (compresi gli spazi e caratteri speciali) accodando un valore tappo "\0" in coda all'array:
pos = -1;
do
pos++;
s[pos] = getchar();
while (s[pos] == '\n');
s[pos] = '\0';
la getchar legge il carattere da tastiera e lo mette nella posizione (pos) puntata dell'array; quando legge INVIO (\n) inserisce il carattere tappo '\0'.