Pregunta: | 29124 - COMO PREDETERMINAR EL NÚMERO DE ENTRADAS A LEER? |
Autor: | Pedro Gomez |
Me gustaria saber como puedo hacer para leer un dato con el gets() y que corte la lectura en cierto numero de caracteres leidos.
Muchas gracias. |
Respuesta: | k_mbe_t |
He respondido eso mismo en otro foro, mirate: http://www.prehackers.com/foros/index.php?board=23;action=display;threadid=616
De todas formas te respondo Nunca debes usar gets precisamente por eso, porque desborda el buffer donde guarda lo leido si metes más caracteres de los que permite. En su lugar usa fgets.Te pongo lo que dice el man de Linux sobre el tema : Función gets: char *gets(char *s); "gets() lee una línea de stdin y la guarda en el búfer al que apunta s hasta que se encuentre bien un carácter ter- minador nueva-línea, bien EOF, al cual reemplaza con '\0'. No se hace ninguna comprobación de desbordamiento del búfer" Función fgets: char *fgets(char *s, int tam, FILE *flujo); "fgets() lee como mucho uno menos de tam caracteres del flujo y los guarda en el búfer al que apunte s. La lec- tura se para tras un EOF o una nueva-línea. Si se lee una nueva-línea, se guarda en el búfer. Tras el último carácter en el búfer se guarda un '\0'. flujo es un flujo de entrada, Si quieres que sea el teclado pones stdin, si no un descriptor de fichero de donde leer. O sea que si quisieras leer una cadena de 10 caracteres desde teclado y guardarla en la variable char cadena[10] harías: fgets(cadena, 10, stdin) Y ya está. Un saludo |