通过指针访问和存储值

宝拉·奇塔罗(Paula Chittaro)

我有一个作业,我必须将整数加起来最多100个数字。

他们给了我这个代表大数字的结构(我认为有更好的方法来代表这个数字,但是我不允许对其进行修改):

typedef struct {
  char* string;
  int lengthError;
} BigNumber;

其中string是该数字本身和lengthError是数字或者说是具有先前定义枚举错误的长度。

我也有sum函数的实现

BigNumber *sum(BigNumber* num1, BigNumber* num2) {
    BigNumber* result = malloc(sizeof(BigNumber));
    int limit = getLength(num1->lengthError, num2->lengthError);
    result->string = malloc(limit);
    int digitResult;
    int index = limit -1;
    int carry = 0;

    while(index != -1) {
        int d1 = ((int)num1->string[index]) - ((int)'0');
        int d2 = ((int)num2->string[index]) - ((int)'0');
        digitResult = d1 + d2 + carry;

        if (digitResult > 9) {
            digitResult = digitResult - 10;
            carry = 1;
        } else {
            carry = 0;
        }

        itoa(digitResult, &result->string[index], 10); //I think this is the problem
        index--;
    }

    result->string[limit] = '\0';
    printf("result: %s\n", result->string);
    return result;
}

我尚未完成该函数的编写,我知道其中存在很多缺陷,但是问题是我无法求和12 +12。我得到的结果是2。

我想通过选择两个数字的尾数来解决这个问题,将它们转换成anint并考虑进位数字来求和。在得到结果之后,digitResult我尝试将其转换为char并将其存储在result->string指针的相应位置

完成操作后,我\0在的最后位置添加result->string

因此,问题是,如何使该操作按需工作?调试代码时,我注意到它第一次将第一个结果存储在result-> string中,在上面的示例中,它是一个数字4,它将垃圾存储在该位置。在第二个结果中,我正确地存储了数字2,这是我打印结果时得到的最终结果。

阿德里安·摩尔

您对itoa功能的使用一个问题(尽管,正如您还建议的那样,也许不是唯一的问题)。

itoa函数将其第一个参数转换为以空值终止的字符串-因此,除了digitResult在字符串的指定位置写入字符表示形式外,它还会在其后添加一个'\0'字符因此,您的字符串将始终在您写入的最后一位数字之后立即终止,而12+12给出的值24似乎只是第一个字符:2

您可以做的是自己转换数字(反转用于获取d1d2值的操作),然后直接将字符串元素设置为转换后的数字。

因此,代替:

    itoa(digitResult, &result->string[index], 10);

采用:

    result->string[index] = (char)(digitResult + '0');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过指针访问值与存储为临时值的效率

来自分类Dev

通过CLR中的指针访问数组的值

来自分类Dev

在堆上存储整数数组并通过指针访问它们

来自分类Dev

通过Javascript和PHP可以访问存储?

来自分类Dev

通过指针访问数组

来自分类Dev

通过指针访问结构

来自分类Dev

通过指针访问数组

来自分类Dev

如何在程序集中存储数组和指针值输入?

来自分类Dev

从CArray指针访问值

来自分类Dev

Ruby如何通过值和指针区分VALUE?

来自分类Dev

检查存储的文件和通过URL访问的文件之间的区别

来自分类Dev

通过指针访问结构体中的指针

来自分类Dev

通过指针访问结构体中的指针

来自分类Dev

如何通过队列指针访问存储在节点中的类中的数据?

来自分类Dev

通过指针访问数组元素?

来自分类Dev

通过指针访问多维数组

来自分类Dev

指针运算和使用 C 中的指针访问值(以 BMP 图像为例)

来自分类Dev

LLVM GEP以及存储vs加载和insertvalue:将值存储到指向聚合的指针

来自分类Dev

使用单个句柄存储和访问分段插值

来自分类Dev

在指针索引处存储值?

来自分类Dev

使用txt文件中的指针在内存中存储和访问数据

来自分类Dev

使用指针访问数组的值

来自分类Dev

当通过另一个类的指针访问时,包含“随机”值的类的数组属性

来自分类Dev

通过访问数组按键和值过滤数组

来自分类Dev

访问结构和空指针

来自分类Dev

在 C 中通过数组名称和指针访问二维数组元素

来自分类Dev

访问存储在多图-C ++中的指针

来自分类Dev

通过反射获取指针值

来自分类Dev

通过地址更改指针的值