Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created August 9, 2020 04:08
Show Gist options
  • Save parzibyte/a28e169c4c35db022f69c9a497333267 to your computer and use it in GitHub Desktop.
Save parzibyte/a28e169c4c35db022f69c9a497333267 to your computer and use it in GitHub Desktop.
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