Discussion:
leer datos
(demasiado antiguo para responder)
quique
2006-08-22 18:08:53 UTC
Permalink
Para leer datos enteros utilizo scanf("%d",&var), como puedo controlar
que sean numeros y no aborte el programa.
RFOG
2006-08-22 18:42:45 UTC
Permalink
Post by quique
Para leer datos enteros utilizo scanf("%d",&var), como puedo controlar
que sean numeros y no aborte el programa.
Desde consola lo tienes que hacer a mano.

Ve leyendo caracter a caracter y los metes en un array, y si recibes algo
que no sea número lo ignoras y cuando recibas un espacio o un enter, usa
atoi para convertir la cadena a entero. Que no se te olvide añadir el '\0'
al final del array, o puedes leer directamente una cadena con "%s".
--
Visita mi blog: http://rfog.blogsome.com
Libros, ciencia ficción y programación
========================================
Vivir sin pena ni gloria, como el burro de Vitoria.
Luis Angel Fdez. Fdez.
2006-08-22 18:44:15 UTC
Permalink
Post by quique
Para leer datos enteros utilizo scanf("%d",&var), como puedo
controlar que sean numeros y no aborte el programa.
Pues, hasta donde yo se, no utilizando scanf :). Puedes utilzar
fgets y luego strtol o atoi, atol... Otra opción, *creo*, puede ser
utilizar fgets y sscanf.

Yo hice una función para leer un entero y utilizo la opción de
fgets y strtol y se que previamente utilicé fgets junto con sscanf,
pero ahora no recuerdo el porqué del cambio :)

Ta llueu.
--
Ubuntu 6.06 (dapper) (kernel 2.6.15-26-amd64-generic x86_64)
AMD Athlon(tm) 64 Processor 3200+ (2200.096 MHz) up 3 days, 12:49
HT: C.D. Arrancatapinos (488047) VI.759 # http://muxin.no-ip.org/
SK: C.D. Arrancatapinos (18088) IV.57 # http://muxin.yi.org/
heltena
2006-08-23 22:25:42 UTC
Permalink
Post by quique
Para leer datos enteros utilizo scanf("%d",&var), como puedo controlar
que sean numeros y no aborte el programa.
"man scanf"

scanf te retorna un entero que te indica cuantos valores ha conseguido
leer, el caso que tienes es facil:

while (1 != scanf(%d", &var))
fprintf(stderr, "Debes escribir un entero\n");

printf("Has escrito %d\n", var);
Alberto Giménez
2006-08-26 15:23:28 UTC
Permalink
Post by quique
Para leer datos enteros utilizo scanf("%d",&var), como puedo controlar
que sean numeros y no aborte el programa.
Para parseos de entradas que pueden venir en formatos "no conocidos", es
mejor utilizar fgets y el parseo con sscanf o similares.

Utiliza fscanf sólo cuando el formato del fichero sea *exacto* siempre.

Saludos
--
Luis Alberto Giménez
JabberID: ***@bulmalug.net
GnuPG ID: 0x3BAABDE1
Loading...