C String to Int: Simple Ways to Convert to Numeric Values

c string to intC is a widely used programming language developed by Dennis Ritchie in 1972. C language’s ancestor is the B’  language which was released in 1970. Among other software, Linux and MySQL were written in the C language. C has influenced many programming languages because of its powerful yet simple features. For example, the modern and popular C++ programming language is directly derived from C. C is a general purpose, structured and procedural language. There exist several  C compilers to convert C code to the machine language on many different hardware platforms. C is favored for system programming as its programs execute quickly and are able to handle low-level tasks. The language itself has been written in assembly language.

In this beginner’s tutorial, we look at ways to convert strings to integers (numeric values) in the C programming language. We assume that you are familiar with the basics of programming.  If you’re new to C programming, you can take this beginners course on C.

Overview of Strings in C

In the C language, a string is the type used to store any text including alphanumeric and special characters. Internally, it’s represented as an array of characters. Each string is terminated by a ‘ ’ character or “NUL”. They are called “null-terminated strings.” Each character is enclosed within single quotes whereas a string is enclosed with double quotes. Many C programs make use of strings and associated properties. The necessary header file for string functions is string.h. The operations possible on strings include- calculating the string length, concatenation of strings, comparison of strings and so on. To learn more about strings in C, take this course on C programming.

What is Type Conversion?

Many times in C programs, expressions contain variables and constants of different data types. For calculation purposes, they need to be converted to the same data type. When you convert one data type into another, the method is termed type conversion.

In C, we have 2 types of type conversion

  1. Implicit Type Conversion – This kind of type conversion is done automatically by the compiler. Programmers do not play any role here.
  2. Explicit Type Conversion- Here the programmer is responsible for the type conversion. This is also called typecasting. The syntax is as follows.
(datatype) expression;

The above item is called a cast operator. Take a look at this example.

char a;

int b;

a=(char)b;
This is a simple way to convert an integer to a character type. Here, ‘a’ is of character data type and b is of integer data type. It is not possible to assign the value of variable b to variable a as they are of different data types. So, we typecast integer b to character in this example. Now, both a and b are of character data type.

How to Convert String to Integer in the C Language

Sometimes, a number is input as a string. To use it for any mathematical operation, we have to convert the string to integer. There are two ways to do this.

  1. The first method is to manually convert the string into an integer.
  2. The second method is to use the built-in functions.

Manual Conversion

Below is a list of ASCII (American Standard Code for Information Interchange) characters and their decimal value.

ASCII Character                 Decimal Value

0                                              48
1                                              49
2                                              50
3                                              51
4                                              52
5                                              53
6                                              54
7                                              55
8                                              56
9                                              57

Numbers are stored in character format within the string. In order to get the decimal value of each string element, we have to subtract it with decimal value of character ‘0.’ Let’s make this clear with the help of an example.

Example 1: Program to Manually Convert a String to an Integer

#include <stdio.h>

#include <string.h>
main()
{
char num[50];
int  i, len;
int result=0;
printf("Enter a number: ");
gets(num);
len = strlen(num);
for(i=0; i<len; i++){
result = result * 10 + ( num[i] - '0' );
}
printf("%d", result);
}

Initially, in this program, we include the two header files stdio.h and string.h. This is done in order to use the functions present in this two header files. The C programming language does not have its own functions. The main function is used to execute the C program. Hence, it is mandatory to have it in every C program. The program code is written within the curly braces of the main function.  Inside the main function we first define and declare the  different variables along with their data types. Variables i, len and result are declared as of integer data type. The result variable is initialized to zero. The printf() function is then called to display the message “enter a number” on the output screen. gets(num) will read the input number and store it as a string.  In this case, the string is an array of characters pointed to by num. Then, we calculate the length of the string using the strlen() function. Next, we loop through the string and convert the string into decimal value. Finally, the string is converted into an integer and printed on the screen.

You can learn how to write your own C programs with this course.

Example 2: A Program to Convert String to Integer Using the atoi() Function

atoi() is a function that converts a string data type to integer data type in the C language. The syntax of this function is as follows

int atoi((const char * str);

Here, str is of type pointer to a character. The const keyword is used to make variables non-modifiable. This function returns an integer value after execution. The atoi() function is present in the stdlib.h header file. This header file contains all the type casting functions used in the C language.

#include <stdio.h>

#include <stdlib.h>
main()
{
char x[10] = "450";
int result = atoi(x);
printf("integer value of the string is %d\n", result);
}

The code is not complex, but to understand it better, you may want to take this course on C programming.

The list of other string to numerical values in-built type casting functions used in C programs include

  • atof()- This function is used to convert string to a floating point value.
  • atol()- Use this function to convert a string to a long integer value.

Hope this article was helpful and informative. Do try out the examples for yourself and experiment with them. Programming is one of those things that becomes better with practice. At any time, if you need help, feel free to refer back to this C course for insights into C programming.