Using getchar, cant change variable?

  • #1

Homework Statement



I have some code and I use getchar to read in some input from the user say a5

I have assigned

char letter;
int number;

letter = getchar();
number = getchar();

so that putchar(letter) prints a

and putchar(number) prints 5

but when I try .... letter=letter - 'a';

I am trying to make this my zero index of array.(i should probably also have a minus one ther for zero indexing.)

putchar(letter) does not print anything??

I am basically trying to convert the letters into integers so I can use an array with input say [a][5].



HELPPPPP!!!!!!!
 
Last edited by a moderator:

Answers and Replies

  • #2
35,019
6,770

Homework Statement



I have some code and I use getchar to read in some input from the user say a5

I have assigned

char letter;
int number;

letter = getchar();
number = getchar();

so that putchar(letter) prints a

and putchar(number) prints 5

but when I try .... letter=letter - 'a';

I am trying to make this my zero index of array.(i should probably also have a minus one ther for zero indexing.)

putchar(letter) does not print anything??

I am basically trying to convert the letters into integers so I can use an array with input say [a][5].
If letter is 'a', and you reset its value using letter = letter - 'a', then letter's new value will be 0, which is the ASCII code for the null character. That's why you aren't getting anything when you try to print it as a character, which is what putchar does. To convert a number to a numeric character, add '0' (ASCII code 48) to it.

So for example, if letter is 3 (not the character '3'), you can convert the number 3 to the character '3' by adding '0'. putchar(3 + '0') will display 3.

Without seeing more of your code, it's hard for me to tell what you are trying to do.

BTW, when you post code, it is considered polite to put a [ code ] tag at the top and [ /code ] at the bottom (no spaces, though). It makes your code easier to read.
 
  • #3
If letter is 'a', and you reset its value using letter = letter - 'a', then letter's new value will be 0, which is the ASCII code for the null character. That's why you aren't getting anything when you try to print it as a character, which is what putchar does. To convert a number to a numeric character, add '0' (ASCII code 48) to it.

So for example, if letter is 3 (not the character '3'), you can convert the number 3 to the character '3' by adding '0'. putchar(3 + '0') will display 3.

Without seeing more of your code, it's hard for me to tell what you are trying to do.

BTW, when you post code, it is considered polite to put a [ code ] tag at the top and [ /code ] at the bottom (no spaces, though). It makes your code easier to read.


Code:
 thanks will use next time

I think thats what I want though...

I am trying to program a game called reversi and I have a [8][8] array.
The user does not input numeric co-od's though ie instead of [0][0] the user input a1 which is meant to be the element of the array [0][0].

thats why I thought I could do by using

Code:
letter = letter -'a'

so the letter a would be 0
"" "" b would be 1

"" "" h would be 7

which then I could use in my array?

Thanks.
 
  • #4
35,019
6,770
To map the characters 'a' through 'h' to the numbers 0 through 7, subtract 'a' from the input character.

To map the characters '1' through '8' to the numbers 0 through 7, subtract '1' from the input numeric character.

For example, if the user types the characters 'b' and '4', you would get 'b' - 'a' == 1 and '4' - '1' == 3. It might seem obvious why '4' - '1' is 3, but the arithmetic that is performed is not quite as simple. In C, characters are stored as their ASCII codes, so the subtractions that are performed are 98 - 97 (ASCII codes for 'b' and 'a') and 52 - 49 (ASCII codes for '4' and '1').
 

Related Threads on Using getchar, cant change variable?

Replies
5
Views
1K
Replies
3
Views
1K
Replies
4
Views
807
Replies
4
Views
921
Replies
0
Views
1K
Replies
1
Views
560
Replies
0
Views
2K
Replies
0
Views
753
Replies
2
Views
3K
  • Last Post
Replies
2
Views
2K
Top