Conversion from char to int?

  • Thread starter Peon666
  • Start date
  • #1
Peon666
108
0
What could be wrong with this code?:

Code:
int arr[10];
char arr2[10];
for (int i=0; i<10; i++)
{
        arr[i]=(int)arr2[i];
}

When I output the supposedly converted array, it's outputs some crazy numbers.
???
 

Answers and Replies

  • #2
Filip Larsen
Gold Member
1,591
503
I assume you are using C/C++ here, in which case you should note that automatic variables (variables defined on the stack) are not initialized. Try initialize your character array with some sensible values.
 
  • #3
Peon666
108
0
It's arr2[10]="P 1 (a tab) 0";
 
  • #4
Peon666
108
0
And it outputs: 80 49 9 48 0 0 0 0 0 0

I want to get 1 and 0 as integers
 
  • #5
Filip Larsen
Gold Member
1,591
503
Characters are internally represented by a byte that contains the code for the character in question. See for instance http://en.wikipedia.org/wiki/ASCII.

To get the digit of the character you would normally first test if the character is in the range '0' to '9' and then subtract '0'. Something like this:

Code:
char ch = ...;
if (ch >= '0' && ch <= '9') {
  int digit = ch - '0';
  // do whatever you need with digit
}

Alternatively you can use some of the methods from the standard ctype.h library (see for instance http://www.cplusplus.com/reference/clibrary/cctype/).
 
  • #6
D H
Staff Emeritus
Science Advisor
Insights Author
15,450
687
It's arr2[10]="P 1 (a tab) 0";

And it outputs: 80 49 9 48 0 0 0 0 0 0

80 = 'P'
49 = '1'
9 = tab
48 = '0'
0 = end of string

It is working exactly right, assuming you are working on an ASCII machine.

I want to get 1 and 0 as integers
Then you want to do something other than a simple cast.
 
  • #7
Peon666
108
0
Alright. The problem is solved to some extend. But a little more problem:

For the given string [P 1 (tab) 0] it outputs fine: 1 0
But when I have a string [P 2 (tab) 34] it outputs: 2 3 (no four.)

What could be the problem?
 
  • #8
D H
Staff Emeritus
Science Advisor
Insights Author
15,450
687
You need to learn how to parse. Casting is not what you want here.
 
  • #9
D H
Staff Emeritus
Science Advisor
Insights Author
15,450
687
To add to the above:

In this case, the function sscanf() will do the trick.

For more complicated parsing problems, you will probably need to learn how to use things like strtok() to split the string into tokens and things like strtol() to convert the numeric tokens into integers.
 

Suggested for: Conversion from char to int?

Replies
2
Views
18K
  • Last Post
Replies
2
Views
39K
  • Last Post
Replies
5
Views
5K
Replies
29
Views
8K
Replies
7
Views
21K
Replies
10
Views
7K
  • Last Post
Replies
11
Views
2K
  • Last Post
Replies
4
Views
6K
  • Last Post
Replies
5
Views
11K
Top