SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: jaaj en Lunes 22 de Febrero de 2010, 08:18
-
Bueno tengo un problema con una funcion pero por mas que pienzo no puedo concluirla y resolverla tengo un arreglo char a[13]; lo que quiero es que ese arreglo solo acepte numeros o signo "+" se que tengo que usar la funcion isdigit para valir que sea un numero el problema es que esa funcion solo es para un digito trato de recorrer el arreglo pero no me sale alguien tiene una idea no pido el codigo solo que me den ideas.
se lo agradeseria
-
Hola, bueno lo que te suguiero es que recorras tu array con un for e ir validando cada uno de los elementos del array con la función isdigit() o si es el signo +.
Aunque si el caso es de almacenar un numero positivo pues tambien podrias tratar de convertir esa cadena en un int con la funcion atoi, esta funcion regresa 0 cuando no se ha logrado convertir la cadena a un valor entero. y podrias verificar si es positivo o negativo.
Bueno espero que te sirva. :)
-
Yo te recomiendo que la funcion isdigit() la hagas vos....es agarrar una tabla ASCII
una cosa parecida (supongo por que no la conocia a es funcion) seria
//Con una cadena normalizada...
int esdigitomasomenos(char *linea)
{
char *aux;
aux=linea;
while(*aux!=' ')
{
if(((*aux>=48 && *aux<=57 ) || (*aux=='+' || *aux=='-')))
aux++;
else
return 1;
}
if(*aux==' ')
return 0;
}
Creo que esta bien devuelve un 0 si la cadena esta compuesta por numero o pro + o por - y 1 si no es asi...OJO la cadena no tiene que tener el 'n' que se agrega despues de apretar el enter con fgets....