2013-10-28 51 views
-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; <-- 
} 
+3

有什麼錯誤?編譯錯誤?錯誤的結果?顯然你的addChar函數簽名與你的前向聲明不一樣。 – sraok

+0

你已經發布了一堆代碼,並說「我遇到了問題,我已經標記了我認爲問題出在哪裏」,但是你沒有解釋具體問題,也沒有提出具體問題。你究竟發佈了哪些代碼? StackOverflow不是「這是一堆代碼的網站,你能猜到我的問題或問題,並告訴我如何解決它?」帖子。 –

回答

1

這可能不是在代碼中唯一的錯誤,但要注意你的原型是這樣的:

char *addlarge(char, char, char); 

,並定義你的函數如下:

char *addLarge(char *number1, char *number2, char *result) { 
    ... 
} 

嘗試更改原型以匹配定義:

char *addlarge(char*, char*, char*); 

希望這會有所幫助!