将大量数字从用户输入存储到整数数组中

时间:2017-07-24 01:56:01

标签: c arrays struct

我目前正在开发一个C项目,该项目需要创建,存储和数学使用太大而无法放入普通变量类型的数字。为此,我们被指示将数字表示为存储在整数数组中的数字序列。我使用如下定义的结构:

struct BigInt {
int val[300000];
int size;
};

(我知道我可以动态分配内存,就是这样     最好的,但这是我最舒服的做法,它有     到目前为止工作得非常好,教授指示我们这样做。)

然后我定义成员A:

struct BigInt A={NULL};

我可以生成并存储,然后添加,减去和乘以随机数,它们可以有任意数字,最多300000(远远超过我需要考虑的数字)。例如,如果生成数字1432并将其存储到BigInt A中,则A.size将为4,而A.val [2]将为3。

现在我需要创建一种将用户输入存储到此类型的方法。例如,用户需要能够直接输入50!然后将它存储到我创建的结构数组类型中。我该怎么做呢?

我能想到的唯一方法是将用户输入存储为字符串,然后将该字符串中的数学运算执行多次,每次存储不同的数字,或者直接从标准输出读取数字,但是我不知道其中任何一个是否可能或者能解决我的问题。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用字符串,如下所示:

char s[300001];
scanf("%s", s);
A.size = strlen(s);
for(int i = 0; i < A.size; i++){
    A.val[i] = s[i] - '0';
}

我认为它会解决你的问题,但这种大整数的实现方式并不高效。

答案 1 :(得分:0)

很抱歉以前的答案,要解决c,你需要使用字符数组来存储每个数字。