Escanea una cadena incluyendo espacios en C

En mi código:

scanf("%s", &text); printf("%s\n", text); 

Entrada:

 hi how are you 

Salida:

 hi 

y no

 hi how are you 

¿Que puedo hacer para arreglarlo?

Mira fgets

La función fgets () lee a lo sumo uno menos que la cantidad de caracteres especificada por n en el flujo dado y los almacena en la cadena. La lectura se detiene cuando se encuentra un carácter de nueva línea, al final del archivo o error. La nueva línea, en su caso, se conserva. Si se lee algún carácter y no hay ningún error, se agrega un carácter `\ 0 ‘para finalizar la cadena.

Supongo que estas buscando

 ssize_t getline(char **lineptr, size_t *n, FILE *stream); 

Que leerá hasta un delimitador de nueva línea. O si estás usando algún otro delimitador

 ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream); 

Use fgets para obtener su entrada:

 #include  #include  int main(void) { char text[80]; fgets(text, sizeof(text), stdin); printf("%s\n", text); }