Skip to main content

atoi implementation in C

Algo for you own implementation of atoi :) :)

int val = 0;
   for each char in the string
      val = val *10 + char-48


lets write some code for it :)

int myatoi(char *convetIt)
{
     int val = 0;
     while(*convetIt)
     {
          val = (val * 10) + *convetIt - 48;
          convetIt++;
     }
}

So how it works? lets see how it works
take an example of string "123"

formula : val = (val * 10 ) + *convetIt - 48
                val = (0 * 10 ) + '1' - 48      =>      0*10  + 49 - 48 =  0  + 1 = 1
                val = (1 * 10)  + '2' - 48      =>     1*10  + 50 - 48 = 10  + 2 = 12
                val = (12 * 10 ) + '3' - 48    =>   12*10 + 51 - 48 = 120 + 3 = 123

so val contains 123 now :) . so how come '1' '2' '3' is replaced with 49,50,51 ? they are the asci values of these characters ,hence this logic.

There is some efficient way to implement this , lets see if anyone comes up with that method.

Remember it wont take care of the decimal values .


Comments

Post a Comment

Popular posts from this blog

Enable stats GUI on haproxy.

Add bottom snippet to the haproxy.conf below the defaults section. listen  stats         bind 19.41.259.10:1234         mode            http         log             global         maxconn 10         clitimeout      100s         srvtimeout      100s         contimeout      100s         timeout queue   100s         stats enable         stats hide-version         stats refresh 30s         stats show-node         stats auth admin:password         stats uri  /haproxy?stats Make sure you are updating the IP address on the bind to your VIP and if you want, you can change th...

Sending a SIGHUP signal to some external process from Python script

Code : import psutil import os import signal pids = psutil.get_pid_list() for pid in pids: if psutil.Process(pid).name == "process_name": os.kill(pid,signal.SIGHUP) break Steps to follow. 1.Get the PID of the process, in this case  "process_name"   to which you want to send out a SIGHUP signal. 2.Use os.kill(pid,sig) command to send out the SIGHUP signal to that process. 1.Get the PID of the process to which you want to send out a SIGHUP signal. One has to install a package called psutil by the following command. easy_install psutil Check out the following links for more details https://code.google.com/p/psutil/ https://pypi.python.org/pypi/psutil use psutil.get_pid_list() to get all of the PIDs. psutil.get_pid_list() works in the following manner.  pids = [ int ( x ) for x in os . listdir ( '/proc' ) if x . isdigit ()] return pids once you get all the PIDs get the PID you are i...

Adding a table to the openstack databases using migration scripts

So I had a task of adding a new table to the neutron database and at the same time not to use the neutron's migration script, as we wanted to keep the neutron code pure. I tried to google for the alembic data migration but could not find anything useful. So I started to reverse engineer the migration scripts of the other Openstack projects. I used the db code base from the following link. https://github.com/stackforge/group-based-policy/tree/stable/juno/gbpservice/neutron/db So I ll just mention the modifications we need to do to make it work. Please note that I am doing these changes in the Devstack environment. 1. Create folders for new project. Lets say we are building a new project called test_db. Add a folder named test_db as shown in the below location /opt/stack/test_db/test_db/ (Yes 2 folders just to keep in sync with Devstack Arch) 2. Copy migration folder from the below link to  /opt/stack/test_db/test_db/ https://github.com/stackforge/group-based-pol...