Skip to content

Instantly share code, notes, and snippets.

@paullaffitte
Last active June 2, 2018 17:46
Show Gist options
  • Save paullaffitte/d0b034ffe7d560a77daa18d580934a49 to your computer and use it in GitHub Desktop.
Save paullaffitte/d0b034ffe7d560a77daa18d580934a49 to your computer and use it in GitHub Desktop.
my_getnbr
#include <stdio.h>
#define my_getnbr(str) my_getnbr_rec(str, 0, 1, 0)
long int my_getnbr_rec(const char *str, long int nbr, char sign, char began)
{
if (*str == '-' && !began)
sign *= -1;
else if (*str >= '0' && *str <= '9' && (began = (*str != '-' && *str != '+'))) {
nbr *= 10;
nbr += *str - '0';
} else if (*str != '+')
return (nbr * sign);
return (my_getnbr_rec(++str, nbr, sign, began));
}
int main()
{
printf("%ld\n", my_getnbr("42"));
printf("%ld\n", my_getnbr("0"));
printf("%ld\n", my_getnbr("-42"));
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment