Skip to content

Instantly share code, notes, and snippets.

@jkxyz
Created May 31, 2015 09:28
Show Gist options
  • Save jkxyz/6a9cec264f89b0e54f0a to your computer and use it in GitHub Desktop.
Save jkxyz/6a9cec264f89b0e54f0a to your computer and use it in GitHub Desktop.
Converting a string to an unsigned integer value in C
// Implements a standard library function `atoi` which returns an
// int for an input string. Also contains functions to calculate
// the length of a string and the value of an exponent expression.
#include <stdio.h>
unsigned int
str_length(const char str[])
{
int len;
for (len = 0; str[len]; len++) continue;
return len;
}
unsigned int
power(unsigned int base, unsigned int exp)
{
if (exp == 0) return 1;
for (; exp > 1; exp--) base = base * base;
return base;
}
unsigned long int
atoi(const char str[])
{
int len, n, i;
len = str_length(str) - 1;
n = 0;
for (i = 0; str[i]; i++, len--) {
switch (str[i]) {
case '1': n += power(10, len); break;
case '2': n += 2 * power(10, len); break;
case '3': n += 3 * power(10, len); break;
case '4': n += 4 * power(10, len); break;
case '5': n += 5 * power(10, len); break;
case '6': n += 6 * power(10, len); break;
case '7': n += 7 * power(10, len); break;
case '8': n += 8 * power(10, len); break;
case '9': n += 9 * power(10, len); break;
default: break;
}
}
return n;
}
int
main(int argc, char **argv)
{
if (argc != 3) return 1;
printf("%li\n", atoi(argv[1]) + atoi(argv[2]));
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment