Reputation: 2075
I have to read from standard input two numbers as strings, in C. How can I print their sum as a string too? I have:
char a[10],b[10];
printf("enter the two numbers");
scanf("%s%s",&a,&b);
char sum[20];
sum=?
A little tip,please? Thank you!
Upvotes: 4
Views: 9460
Reputation: 20383
Unless it is prohibited to do so, then I would approach as the following:
Convert the input string(s) to numbers. I would trystrtol()
.
Add the numbers
Convert the sum from number to string. I would trysnprintf()
.
Upvotes: 2
Reputation: 11251
chars
are 8-bit binary numbers, just like smaller ints
. We must interpret them to give them meaning as letters.
Your computer probably uses the ASCII standard. In ASCII, the char
value representing the character 0
does not actually have the numerical value 0. It's 48. Fortunately, the numbers are all consecutive, so 1
is 49, etc.
char zero = '0';
printf("%d\n", zero);
char one = '1';
printf("%d\n", one);
> 48
> 49
(Note that the %d
format flag in printf
means "interpret as an integer".)
Since chars
are numbers, we can do math with them.
char one = '1';
int one_num = one - '0';
printf("%d\n", one_num);
> 1
Now, you can implement the addition with decimal digits and carrying just like you'd do on paper.
Upvotes: 1
Reputation: 71065
Do this with programming just as you would do it on paper. Make small steps, and make explicit every little step that we do on paper without noticing.
00111
---------
12345
123456789
---------
123469134
0
. 5+9=14
. You'll need to maintain that in another variable.Use loops. After you've added, you will need to know the total length, and move it to the left edge. Because we don't know in advance what length we'll get, you'll start writing down the answer from the right edge of your sum
array. Think, how and what can you improve about this.
Upvotes: 2
Reputation: 108968
Just do it like in elementary school
Let's say the input was "...69 + ...63"
9 + 3 = 2 and 1 to go
6 + 6 + 1 = 3 and 1 to go
...
Upvotes: 3