| |||
El buffer Aun no entinedo bien lo del buffer, se como liberarlo, se como acumular datos en el y luego liberarlo, se que si pongo mas de un gets y getc hay que liberarlo para que funcione mi programa, pero no se que otras funciones se tienen que liberar tambien, les agradeceria mucho ya que tengo mucho tiempo con este tema y no me pueden responder, gracias amigos |
| |||
Respuesta: El buffer Me dicuenta que no sabes mucho sobre este tema del buffer.... Porque la palabra adecuada no sera "liberar el buffer" porque no es una obligacion. Por ahi a liberar el buffer te refieres a vaciarlo pero eso se aplica mas a la hora de imprimir en pantalla que de leer del teclado. Te comendo un poco, cuando presionas las teclas del teclado, estas se van acumulando en un buffer (un array en la memoria). Al aplicar las opciones getc, gets, scanf, fread aplicado a la entrada standar. Lo que se hace es leer de ese buffer y quitarlo para no leerlo nuevamente. Lo interesante de esta opcion seria no leer de mas, asi no se pierden datos en el camino. Por ejemplo si estamos leyendo un entero con scanf y ingresamos "124123 hola david" lo interesante seria "consumir" 124123 y no el hola david. Por eso si usas el gets para leer una linea es tu problema como lees toda la informacion, no es recomendable si queres leer muchos datos preformateados. Por otro lado tenes el buffer de salida, que es aquel que se va llenando hasta que en un momento el sistema operativo decide volcarlo en la pantalla. Esto lo hace para ganar velocidad supongo. Pero se le da la opcion al usuario de volvar al buffer cuando desea. Lo ideal seria vaciarlo o liberarlo antes de alguna instruccion que pueda probocar algun error. Ya que si se llega a producir un error y este no se vacio jamas sera mostrado en pantalla. |
| |||
Respuesta: El buffer osea que cada que yo pongo en mi programa,: a = getc ( stdin ); cuando lo ejecuto esta el cursor esperando a que yo escriba mi caracter, en el momento en el que yo escribo por ejemplo abcdeg, en ese momento estoy escribiendo en el buffer??? y la funcion getc toma el caracter de ese buffer??? y las demas letras que no leyo se quedan en el buffer???? y es en ese momento que tengo que volcar el buffer por los posbiles errores???? y que tipo de error se produciria ?????? ese es un buffer de datos???? a que te refieres a que el sistema operativo decide volcarlo en pantalla, como en que momento el sistema operativo decide volcar el buvver??? y antes de que instruccion te refieres a que es recomendable liberarlo para que no ocurra un error, esa es mi gran duda, antes de que instrucciones?????? muchas gracias Última edición por davidtadeo; 08/09/2010 a las 07:56 |
| |||
Respuesta: El buffer Me parece que te confundis...porque hay dos buffer. Uno de entrada y otro de salida. Antes de esta pregunta esta todo contestado: " y es en ese momento que tengo que volcar el buffer por los posbiles errores???? " Sobre esa pregunta la verdad que no te entendi nada. Podes reformular las cosas que escribis porque la verdad que me esta costando entender. " que tipo de error se produciria??????": Eso depende de tu programa. "ese es un buffer de datos????" Cualquier cosa puede ser tomado como un dato. ASi que si, es un dato!! Un buffer de nada no tiene sentido. "a que te refieres a que el sistema operativo decide volcarlo en pantalla, como en que momento el sistema operativo decide volcar el buvver???" Aca imagino que ya pasaste a hablar sobre el baffuer de salida. Como dije anteriomente el sistema opertivo no esta costantemente escribiendo en pantalla sino que acumula una cierta cantidad de caracteres en un Buffer y despues lo imprime en la pantalla. " antes de que instruccion te refieres a que es recomendable liberarlo para que no ocurra un error, esa es mi gran duda, antes de que instrucciones?????? ": Antes que nada. Tenes el buffer ese cargado no va a probocar errores. Sino que, EN CASO DE PRODUCIRSE UN ERROR si el buffer no se imprimio en pantalla, jamas se hara. Sugiero que mejores tu escritura. |
Etiquetas: |