Archived:Converting C strings to numbers
(New page: __NOTOC__ __NOEDITSECTION__ {|style="background:#eceff2" width="660px" border="1" cellpadding="5" cellspacing="0" |- |'''ID''' || |'''Creation date''' || April 4, 2008 |- |'''Plat...) |
m (Protected "Converting C strings to numbers" [edit=sysop:move=sysop]) |
Revision as of 10:00, 9 April 2008
| ID | Creation date | April 4, 2008 | |
| Platform | S60 3rd Edition, FP1 | Tested on devices | Nokia N93 |
| Category | Open C | Subcategory | Files/Data |
| Keywords (APIs, classes, methods, functions): atoi(), atof(), atol(), strtod(), strtol() |
Overview
The simplest way to convert string to integer in OpenC is to use atoi(). But atoi() does not differentiate between '0' and invalid input and it does not allow to specify which base you are working with. Another analogous functions to atoi() are atof() and atol() and they can be used with variable types double and long.
Functions strtod() and strtol() offer more control over the conversion process and they will not produce unexpected results on overflow during conversion. These functions make the position of the first unread character in the input string available by assigning it to second parameter. The function strtol() has also third parameter to indicate the base of the numeral string.
Note: In order to use this code, you need to install Open C plugin.
This snippet can be self-signed.
MMP file
The following libraries are required:
LIBRARY libc.lib
Source file
#include <stdlib.h> //atoi, atof(), atol(), strtod(), strtol()
#include <stdio.h> //printf
int main(void)
{
char* int_str = "123"; /* NOTE: atoi will convert e.g. value "xyz" to '0' */
char* double_str = "123.0";
char* long_str = "123456";
int int_result = 0;
double double_result = 0.0;
long long_result = 0;
char* string_to_convert = NULL;
char* rest_of_the_string = NULL;
double double_value = 0.0;
long long_value = 0;
/* functions atoi(), atof() and atol() */
int_result = atoi(int_str);
printf("The string %s as an integer is = %d\n",int_str,int_result);
double_result = atof(double_str);
printf("The string %s as a double is = %f\n",double_str,double_result);
long_result = atol(long_str);
printf("The string %s as a long is = %ld\n",long_str,long_result);
/* functions strtod() and strtol() */
string_to_convert = "123.456RestOfTheString";
double_value = strtod(string_to_convert, &rest_of_the_string);
printf("The string = %s, number = %f, rest = %s\n",
string_to_convert, double_value, rest_of_the_string);
string_to_convert = "123456789NoMoreNumbers";
rest_of_the_string = NULL;
long_value = strtol(string_to_convert, &rest_of_the_string, 10 ); /* use base 10 */
printf("The string = %s, number = %ld, rest = %s\n",
string_to_convert, long_value, rest_of_the_string);
return 0;
}
Postconditions
five different string to number conversions are executed and displayed to standard output.

