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!
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.
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().
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.
Convert the strings into numbers using atoi, then add them together, and then print the sum using a print function like printf. See this
strtol() than the function you suggested. strtol() is well behaved in presence of 'stupid' input.atoi, they probably want to teach you about ascii encodings, look into that.
snprintf(sum,........);