Programación General > C/C++
fallo intentando hacer scanf personalizado
Eternal Idol:
--- Código: C++ ---printf("nintroduzca una cadena");char line[80];fgets(line, sizeof(line), stdin);sscanf(line, "%49[a-z]",b);printf("nintroduzca otra cadena: ");*line = 0;fgets(line, sizeof(line), stdin);sscanf(line, "%49[a-z]",c);
PD. Es una palabra mas que una cadena.
krnl64:
O sea, la técnica es leer el buffer de entrada en un array y obtener de ese array los datos que buscamos.
No entiendo la linea 6.
Haciendo
--- Código: C --- *line=0; No borras solo el primer caracter del buffer y el resto se queda en la memoria ?
No deberia ser
--- Código: C --- memset(line,0,80); para borrar el contenido del array y en caso que quisiera liberarlo poner *line=0?
Eternal Idol:
La tecnica es leer con una funcion como fgets que a diferencia de scanf no deja basura en el buffer, la cadena donde se almacene puede ser memoria dinamica tranquilamente no tiene que ser un array.
Con *line = 0; hacemos que la cadena linea este vacia (las cadenas terminan en 0), supongamos que fgets falla y no escribe nada (lo mismo habria que hacer al principio, igual es un ejemplo nada mas), entonces seguimos teniendo una cadena vacia, el metodo del memset tambien es bueno (siempre es mejor usar sizeof por si cambiamos el tamaño).
krnl64:
Muchas Gracias, me sacaste de la duda.
Saludos.
Eternal Idol:
De nadas B)
Navegación
[*] Página Anterior
Ir a la versión completa