בASCII הערכים של המספרים נופלים על טווח ה0x30-0x39, משמע הספרה 9 בASCII בזכרון תופיע כ0x39.
משמע, אם תקח CHAR יחיד ותפחית ממנו 0x30, תקבל את הספרה.
בגלל שמתעסקים פה במספרים עצומים ואני לא רואה שמבקשים ממך לשמור את התוצאה בזכרון, הנה קוד שאמור לסדר אותך
char a[] = "1234567899987654321"; char b[] = "9874561231236547898"; char c[] = "0000000000000000000"; /* Asserting that len(a) == len(b) */ int i = 0; int carry = 0; int a_index = 0; int b_index = 0; int add_result = 0; for ( i = strlen(a) ; i > 0; --i ) { a_index = (int)a[i-1] - 0x30; b_index = (int)b[i-1] - 0x30; add_result = a_index + b_index + carry; if (10 <= add_result) { /* Not sure how neccesary this is */ carry = add_result / 10; add_result = add_result - (10*carry); } c[i-1] = (char)(add_result + 0x30) }printf("%s", c);
|