CodeSteps

Python, C, C++, C#, PowerShell, Android, Visual C++, Java ...

C Programming – Understanding atoi and itoa functions

Converting one type of data to another type is the key thing when we deal with data using programming languages. C language supports this data conversion, and provides functions to ease our programming in C. Through this article we are going to discuss about atoi and itoa data conversion functions.

atoi function

This function is used to convert a string to an integer. Here is the syntax;

int atoi (const char *str);

It takes a string as an argument, converts the string into an integer and returns it. Returns a value 0, in case we pass an in-appropriate string. That means, if we pass a string with non-numeric characters, it returns the value 0. The return value is depending on the string we pass. Below table shows some examples;

StringReturn value
“Hello!”0
“1234”1234
“O2”0
” 74″74
“3M”3
“+768”768
“-89”-89
“.23”0

Observe that, when we pass a numeric string, it returns it’s numeric value. When we pass string starts with numeric characters along with non-numeric characters; the atoi function returns the numeric portion of it and simply ignores rest of the characters.

itoa function

Before start looking into this function; would like to mention, this is a non-standard function. Non standard functions may or may not be available in the version of C what you are using. During the compilation, the compiler will through an Error, if it fails to recognize these functions.

This function takes a numeric value as an argument and converts it into a string. The syntax of the function looks like below;

char *itoa (int value, char *buffer, int radix);

It takes a numeric value as an argument, and a buffer to store the converted string value. The conversion will happen based on the provided base system through it’s radix argument (usual values are 2, 8, 10 or 16).

Once it converts the string to an integer, it place the string into the buffer and returns it’s address. Then buffer address & return address are same, right? Yes. As I mentioned before, this is a non-standard C function; the implementation vary depending on the version of C you are using. Some providers, implement it as to return a NULL value when we pass wrong data through it. This is implementation specific, and non-standard.

Depending on the value you pass in radix, it converts the value into a string. If you pass 2, it converts the value into a binary string; if you pass 8, it converts the value into an octal string; etc.,

Here are some examples;

ValueRadixReturn String
2010“20”
202“10100”
208“24”
2016“14”
-12310“-123”
-202“11111111111111111111111111101100”
0.210“0”

Working Example

Here is the code to demonstrate what we discussed so far;

#include <stdio.h>
#include <stdlib.h> // need to include this header for atoi() and itoa() functions

void main()
{
	// keep enough memory to avoid issues
	char buf[256] = "\0";

	printf("%d\n", atoi("1234"));
	printf("%s\n", itoa(1234, buf, 10));
}

// Malin

C Programming – Understanding atoi and itoa functions

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top