-1
嘿傢伙我的程序任務要求我寫一個程序來添加大數字在一起,並通過調用函數返回它。我很難理解如何將值返回以顯示。我相信我的錯誤是在我的指針的不正確使用中,但我不明白這足以弄清楚。請幫忙!使用char添加大數字並返回值。指針錯誤
我已經把箭頭放在我認爲問題出現的地方,但我不知道如何解決。 謝謝!
下面是代碼:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *addlarge(char, char, char); <--
int main(int argc, char* argv[])
{
unsigned char number1 [256] = {'0'};
unsigned char number2 [256] = {'0'};
unsigned char result [256] = {0};
//ask for numbers
printf ("Please enter a number upto 255 digits long:\n");
scanf ("%s", number1);
printf ("Please enter another number upto 255 digits long:\n");
scanf ("%s", number2);
char *result1 = addLarge(*number1, *number2, *result); <--
printf("\nThe sum is %s\n", result1); <--
}
char *addLarge(char *number1, char *number2, char *result) <--
{
int x, z, b, padding1, padding2, padding, y=0, sum, carry=0;
//right aligns the numbers
x = strlen(number1);
padding1 = 255 - x;
memmove(number1+padding1,number1,x);
memset(number1, 0, padding1);
z = strlen(number2);
padding2 = 255 - z;
memmove(number2+padding2,number2,z);
memset(number2, 0, padding2);
//works it out
for(y=254; y>=0; y--) {
if ((number1[y] != 0) || (number2[y] != 0)) {
if ((number1[y] != 0) && (number2[y] != 0)) {
sum = 0;
sum += carry;
carry = 0;
sum += number1[y] - '0' + number2[y] - '0';
carry = sum/10;
result[y+1] = sum % 10 + '0';
}
else {
sum = 0;
sum += carry;
carry = 0;
sum += number1[y] - '0' + number2[y];
carry = sum/10;
result[y+1] = sum % 10 + '0';
}
}
//adds the carries
if ((number1[y] == 0) && (number2[y] == 0) && (carry==1)){
result[y+1] = 1 + '0';
carry = 0;
}
}
//shifts number back
for (b=255; result[b] != 0; b--){
// result[b] = result[b];
}
padding = strlen(result) + 1;
system ("PAUSE");
return result; <--
}
有什麼錯誤?編譯錯誤?錯誤的結果?顯然你的addChar函數簽名與你的前向聲明不一樣。 – sraok
你已經發布了一堆代碼,並說「我遇到了問題,我已經標記了我認爲問題出在哪裏」,但是你沒有解釋具體問題,也沒有提出具體問題。你究竟發佈了哪些代碼? StackOverflow不是「這是一堆代碼的網站,你能猜到我的問題或問題,並告訴我如何解決它?」帖子。 –