Duda con scanf

Iniciado por Caster, 29 Septiembre 2012, 11:23 AM

0 Miembros y 1 Visitante están viendo este tema.

Caster

En un ejemplo de un codigo en un libro que estoy leyendo, me he encontrado con esta linea:

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

n0z

Efectivamente sirve para leer una linea que introduzca el usuario, hasta que introduces un salto de linea.

leosansan

Cita de: 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:
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:
#include <stdio.h>
int main(){
char linea [80];
char ch1, ch2;
scanf("%[^\n]%*c", linea);
printf("Ingrese 1: ");
scanf("%c%*c",&ch1);
printf("Ingrese 2: ");
        scanf("%c%*c",&ch2);
printf("%c  %c   %s\n", ch1, ch2,linea);
return 0;
}

Te dejo esta referencia http://beej.us/guide/bgc/output/html/multipage/scanf.html
Saludos

Caster

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