Buenas. Se me ocurrió esta forma, le falta algunas verificaciones y tal, pero te dará una idea.
Código C:
Ver original#include <stdio.h>
#include <string.h>
#include <ctype.h>
int
main (argc, argv)
int argc;
char *argv[];
{
char safe_string[9] = {0};
char * tmp_string;
int size_str = 0;
int is_number = 0;
if (argc < 2) {
fprintf(stderr
, "[error] faltó un argumento.\n"); return 0;
}
strncat(safe_string
, argv
[1], sizeof safe_string
); tmp_string = safe_string;
/* Solo puede: -número. Mas no: núm-ero. */
if (safe_string[0] == '-')
size_str++;
/* */
while (*tmp_string != '\0')
{
if (isdigit(*tmp_string
) || *tmp_string
== '.') size_str++;
tmp_string++;
}
is_number = strnlen(argv[1], sizeof safe_string) - size_str;
if (is_number == 0)
puts("Sí, es un número."); else
puts("No, no es un número.");
return 0;
}