Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Caster en 29 Septiembre 2012, 11:23 am



Título: Duda con scanf
Publicado por: Caster en 29 Septiembre 2012, 11:23 am
En un ejemplo de un codigo en un libro que estoy leyendo, me he encontrado con esta linea:

Código
  1. scanf("%[^\n]", linea);

La parte que no entiendo es la de "%[\n]", creo que sirve para guardar la linea de texto introducida en el array linea, pero sin incluir el salto de linea, aunque no estoy del todo seguro, queria saber exactamente para que sirve eso exactamente.

Saludos


Título: Re: Duda con scanf
Publicado por: n0z en 29 Septiembre 2012, 12:02 pm
Efectivamente sirve para leer una linea que introduzca el usuario, hasta que introduces un salto de linea.


Título: Re: Duda con scanf
Publicado por: leosansan en 29 Septiembre 2012, 12:24 pm
En un ejemplo de un codigo en un libro que estoy leyendo, me he encontrado con esta linea:
Código
  1. scanf("%[^\n]", linea);
La parte que no entiendo es la de "%[\n]", creo que sirve para guardar la linea de texto introducida en el array linea,
Como te han comentado, "entra" todo en el scanf y a diferencia de éste que sólo entra hasta encontrar un espacio en blanco, o si introduces 123asd y el scanf tiene en su formato %d sólo coge el número, ahora la cadena linea puede contener espacios en blanco. Como ejemplo, y aprovechando el otro hilo de scanf sin fflush, puedes probar 123asd asd. Te dejo éste código:
Código
  1. #include <stdio.h>
  2. int main(){
  3. char linea [80];
  4. char ch1, ch2;
  5. scanf("%[^\n]%*c", linea);
  6. printf("Ingrese 1: ");
  7. scanf("%c%*c",&ch1);
  8. printf("Ingrese 2: ");
  9.        scanf("%c%*c",&ch2);
  10. printf("%c  %c   %s\n", ch1, ch2,linea);
  11. return 0;
  12. }
Te dejo esta referencia http://beej.us/guide/bgc/output/html/multipage/scanf.html
Saludos


Título: Re: Duda con scanf
Publicado por: Caster en 29 Septiembre 2012, 13:01 pm
Muchas gracias a los dos, en el libro que estoy leyendo viene perfectamente explicado todo sobre la entrada y salida de datos, pero no me habia fijado yo.

Saludos