如何在c中的两个字符串数组之间添加数字

时间:2014-11-19 18:25:15

标签: c arrays string

有时我们需要计算很长的数字,这些数字不能保存C的任何数值数据类型。我们知道所有常见的数值数据类型都有局限性。

我是初学者,我认为......有可能是字符串。我的问题是:

如何添加两个字符串?

示例输入:

字符串1:1234
字符串2:1234

输出
结果:2468


[注意:字符串中的数字可能非常长。无限制]

3 个答案:

答案 0 :(得分:3)

转换为数字。相反,你必须在基本教育中学习:一次一对数字,从最低(最右边)开始,记得向前(向左)。

源字符串的长度无关紧要,但您必须确保结果char数组足够大,以便最长输入值加上一个(可选)数字。

算法非常简单,我将“输入代码”(这是Stack Overflow的主题)。归结为

carryOver = 0

loop:
result0 = inputA0 + inputB0 + carryOver
if result0 > '9'
    carryOver = 1
    result0 -= 10
else
    carryOver = 0
go to loop while there is still input left ...

其中变量名中的0表示正在考虑的当前数字的索引。

答案 1 :(得分:0)

编辑此答案不允许随身携带,但无限长添加操作。它没有解决用户的问题。但它是一个实现示例,用户要求一个。这就是为什么我会让答案留在这里而不是删除它。

你可以使用atoi(ascii to int)

你真的是指C或C ++吗?

此代码无法计算8 + 3 = 11但5 + 3 = 8.没有结转。

int temp;
const inst size_of_array;
char one[size_of_array];
char two[size_of_array];
char result[size_of_array];
for(int i = 0; i < size_of_array; i++)
{
    temp = atoi(one[i]) +atoi(two[i]);
    results[i] = numberToCharacter(temp);
}

char numberToCharacter((int temp)
{
 if(temp == 1)
 {
  return('1'):
 } ///..
}

答案 2 :(得分:-3)

将字符串变量解析为整数变量。计算它们的总和,然后将结果解析为字符串。

<强> Here is a fiddler.

以下是代码:

#include <stdio.h>

int main(void) {
    //Declaring string variables
    char string1[10] = "1234";
    char string2[10] = "1234";
    //Converting them to integer
    int int1 = atoi(string1);
    int int2 = atoi(string2);
    //Summing them
    int intResult = int1 + int2;
    //Printing the result
    printf("%d", intResult);

    return 0;
}