|
/* Convertir una cadena de caracteres a un valor entero mediante una
función que reciba la dirección de la cadena y la dirección de la variable que almacenará el resultado. (Se supone que hay
números el la cadena).
-Buscar el comienzo de numero distinto de blanco, supondremos + o -.
-Averiguar el signo, si no es un carácter valido devuelve un error.
-Si el carácter es un digito se pasa a decimal ((ascii)numero-48)*10.
-Si la función finaliza de forma correcta devuelve un uno. */
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int convierte(char*,float*);
void main()
{
char cadena[50];
float valor;
printf("Dame una cadena:");
gets(cadena);
if (convierte(cadena,&valor))
printf("El valor es:%f",valor);
else
puts("ERROR");
}
int convierte(char *pcadena,float *pvalor)
{
int neg=1,error=0;
while(*pcadena==' ')
pcadena++;
if (!isdigit(*pcadena))
{
if (*pcadena=='-')
neg=-1;
else
if (*pcadena=='+')
neg=1;
else
error=1;
pcadena++;
}
while ((*pcadena) && (!error))
{
if (!isdigit(*pcadena))
error=1;
else
*pvalor=*pvalor*10+((int)(*pcadena-48));
pcadena++;
}
if (error) return 0;
*pvalor=(*pvalor)*(float)neg;
return 1;
}
d
VOLVER
|