Lectura de múltiples líneas de entrada con scanf

Escribir un progtwig para la clase, restringido solo al método scanf. El progtwig recibido puede recibir cualquier número de líneas como entrada. Problema con la recepción de entrada de múltiples líneas con scanf.

#include  int main(){ char s[100]; while(scanf("%[^\n]",s)==1){ printf("%s",s); } return 0; } 

Ejemplo de entrada:

 Here is a line. Here is another line. 

Esta es la salida actual:

 Here is a line. 

Quiero que mi salida sea idéntica a mi entrada. Utilizando scanf.

Prueba este código y usa la tecla tabulador como delimitador

 #include  int main(){ char s[100]; scanf("%[^\t]",s); printf("%s",s); return 0; } 

Creo que lo que quieres es algo como esto (si estás realmente limitado solo a scanf):

 #include  int main(){ char s[100]; while(scanf("%[^\n]%*c",s)==1){ printf("%s\n",s); } return 0; } 

El% * c básicamente va a suprimir el último carácter de la entrada.

Del man scanf

 An optional '*' assignment-suppression character: scanf() reads input as directed by the conversion specification, but discards the input. No corresponding pointer argument is required, and this specification is not included in the count of successful assignments returned by scanf(). 

[Editar: eliminó la respuesta engañosa según el ataque a Chris Dodd :)]

Te daré una pista.

Debe repetir la operación scanf hasta que se scope una condición “EOF”.

La forma en que se hace generalmente es con el

 while (!feof(stdin)) { } 

construir.

Pruebe este fragmento de código. Funciona como se desea en un comstackdor GCC con estándares C99.

 #include int main() { int s[100]; printf("Enter multiple line strings\n"); scanf("%[^\r]s",s); printf("Enterd String is\n"); printf("%s\n",s); return 0; }