Validacion numerica
Hola a todos, soy nuevo en esto de programacion en C, y estoy haciendo un programa que recoge una serie de datos por pantalla con scanf, y funciona bien siempre y cuando el usuario haga lo que yo le digo, que introduzca un numero entre 001-999, pero si el tio mete una letra y pulsa intro se lio, me entra en un bucle infinito y apaga y vamonos.
Queria saber si hay alguna funcion en alguna de las librerias estandar de sistema para la validacion numerica, y ya puestos, si de paso se pudiera restringir el numero de digitos introducidos a tres ya seria la leche!!!
Bueno, muchas gracias a todos!!
P.D. Por lo que he visto algo muy importante en C son las librerias, pero no se donde conseguir informacion de todas las que hay y de las funciones que contienen (Estoy hablando de ANSI C)
Saludos, Enadan
Queria saber si hay alguna funcion en alguna de las librerias estandar de sistema para la validacion numerica, y ya puestos, si de paso se pudiera restringir el numero de digitos introducidos a tres ya seria la leche!!!
Bueno, muchas gracias a todos!!
P.D. Por lo que he visto algo muy importante en C son las librerias, pero no se donde conseguir informacion de todas las que hay y de las funciones que contienen (Estoy hablando de ANSI C)
Saludos, Enadan
No NO NON ONONO!!!!
En ansi C no existe una funcion que restringa a 3 digitos el flujo por el teclado.
El problema que tenes vos es porque no sabes manejar el BUFFER del teclado
a scanf hay que usarla en conjuncion con la funcion
flushbuffer
busca por la red y aprende a usarla.
En ansi C no existe una funcion que restringa a 3 digitos el flujo por el teclado.
El problema que tenes vos es porque no sabes manejar el BUFFER del teclado
a scanf hay que usarla en conjuncion con la funcion
flushbuffer
busca por la red y aprende a usarla.
No NO NON ONONO!!!!
En ansi C no existe una funcion que restringa a 3 digitos el flujo por el teclado.
El problema que tenes vos es porque no sabes manejar el BUFFER del teclado
a scanf hay que usarla en conjuncion con la funcion
flushbuffer
busca por la red y aprende a usarla.
En ansi C no existe una funcion que restringa a 3 digitos el flujo por el teclado.
El problema que tenes vos es porque no sabes manejar el BUFFER del teclado
a scanf hay que usarla en conjuncion con la funcion
flushbuffer
busca por la red y aprende a usarla.
No NO NON ONONO!!!!
En ansi C no existe una funcion que restringa a 3 digitos el flujo por el teclado.
El problema que tenes vos es porque no sabes manejar el BUFFER del teclado
a scanf hay que usarla en conjuncion con la funcion
flushbuffer
busca por la red y aprende a usarla.
El ejemplo que te dieron usa la libreria CONIO.H
que es de BORLAND, no es ANSI C
busca por la red STANDAR C LIBRARY y vas a encontrar referencia de todas sus funciones
En ansi C no existe una funcion que restringa a 3 digitos el flujo por el teclado.
El problema que tenes vos es porque no sabes manejar el BUFFER del teclado
a scanf hay que usarla en conjuncion con la funcion
flushbuffer
busca por la red y aprende a usarla.
El ejemplo que te dieron usa la libreria CONIO.H
que es de BORLAND, no es ANSI C
busca por la red STANDAR C LIBRARY y vas a encontrar referencia de todas sus funciones
No NO NON ONONO!!!!
En ansi C no existe una funcion que restringa a 3 digitos el flujo por el teclado.
El problema que tenes vos es porque no sabes manejar el BUFFER del teclado
a scanf hay que usarla en conjuncion con la funcion
flushbuffer
busca por la red y aprende a usarla.
El ejemplo que te dieron usa la libreria CONIO.H
que es de BORLAND, no es ANSI C
busca por la red STANDAR C LIBRARY y vas a encontrar referencia de todas sus funciones
En ansi C no existe una funcion que restringa a 3 digitos el flujo por el teclado.
El problema que tenes vos es porque no sabes manejar el BUFFER del teclado
a scanf hay que usarla en conjuncion con la funcion
flushbuffer
busca por la red y aprende a usarla.
El ejemplo que te dieron usa la libreria CONIO.H
que es de BORLAND, no es ANSI C
busca por la red STANDAR C LIBRARY y vas a encontrar referencia de todas sus funciones
HOLA A TODOS , SOY NUEVO EN ESTO DE PROGRAMACION PERO NECESITO UN PROGRAMA DEL ANALISADOR LEXICO Y UN PROGRAMA DE UN BUFFER PAR DARME UNA IDEA DE COMO HACERLOS GRACIAS A TODOS Y SI ME PUEDEN AYUDAR
Saludos: un programa completo que hace lo que quieres, espero y te sirva.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
// Funcion que valida un numero de 3 digitos como
// maximo
// devuleve el valor tecleado
int LeerInt(){
// Cadena temporal que almacena lo que el usuario
// teclea
char intTmp[4];
// Almacena el valor numerico que el usuario
// tecleo
int resultado;
// Para contar los caracteres que el usuario esta
// tecleando maximo 3
int contador = 0;
// Solo permite un maximo de 3 caracteres leidos
// desde el teclado
while(contador < 3){
// si se presiono una tecla
if(kbhit()){
// Leemos y almacenamos el caracter
intTmp[contador++] = getche();
// El usuario presiono enter
if(intTmp[contador - 1] == 13){
contador--;
break;
}
}
}
// Asignamos fin de cadena
intTmp[contador] = ' ';
// Recorremos el arreglo de caracteres
for(int indice = 0; indice < contador; indice++){
// Verificamos que solo se hayan tecleado digitos
if(!isdigit(intTmp[indice]))
// Si no es digito devolvemos 0
return 0;
}
// Si encontramos puros digitos regresamos su
// valor numerico
return atoi(intTmp);
}
void main(){
clrscr();
int numero;
printf("Teclea un valor entre 001 - 999n");
// alamcena el valor tecleado
numero = LeerInt();
if(numero <= 0 || numero > 999)
printf("nValor invalido");
else{
printf("nEl valor tecleado:n");
printf("%d", numero);
}
getch();
}
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
// Funcion que valida un numero de 3 digitos como
// maximo
// devuleve el valor tecleado
int LeerInt(){
// Cadena temporal que almacena lo que el usuario
// teclea
char intTmp[4];
// Almacena el valor numerico que el usuario
// tecleo
int resultado;
// Para contar los caracteres que el usuario esta
// tecleando maximo 3
int contador = 0;
// Solo permite un maximo de 3 caracteres leidos
// desde el teclado
while(contador < 3){
// si se presiono una tecla
if(kbhit()){
// Leemos y almacenamos el caracter
intTmp[contador++] = getche();
// El usuario presiono enter
if(intTmp[contador - 1] == 13){
contador--;
break;
}
}
}
// Asignamos fin de cadena
intTmp[contador] = ' ';
// Recorremos el arreglo de caracteres
for(int indice = 0; indice < contador; indice++){
// Verificamos que solo se hayan tecleado digitos
if(!isdigit(intTmp[indice]))
// Si no es digito devolvemos 0
return 0;
}
// Si encontramos puros digitos regresamos su
// valor numerico
return atoi(intTmp);
}
void main(){
clrscr();
int numero;
printf("Teclea un valor entre 001 - 999n");
// alamcena el valor tecleado
numero = LeerInt();
if(numero <= 0 || numero > 999)
printf("nValor invalido");
else{
printf("nEl valor tecleado:n");
printf("%d", numero);
}
getch();
}
hola a todos necesito un programa que permita almacenar un numero entero leido por el teclado en un arreglo de caracteres ¿quien me ayuda?
