Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
int esFlotanteValido(char *cadena) {
int longitud = strlen(cadena);
// Quitar espacios, saltos de línea, etcétera
while (longitud > 0 && isspace(cadena[longitud - 1]))
longitud--;
if (longitud <= 0) return 0;
int i;
int haEncontradoElPunto = 0;
for (i = 0; i < longitud; ++i) {
// En caso de que sea un guión, y que no esté al inicio, no es válido
if (cadena[i] == '-' && i > 0) {
return 0;
}
// El punto solo puede aparecer una vez
if (cadena[i] == '.') {
// Si ya lo ha encontrado antes, entonces no es válido
if (haEncontradoElPunto) {
return 0;
} else {
haEncontradoElPunto = 1;
}
}
// Si no es dígito, tampoco es válido
if (!isdigit(cadena[i]) && cadena[i] != '-' && cadena[i] != '.') {
return 0;
}
}
return 1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment