c:a.exe已停止工作

时间:2016-09-25 22:35:19

标签: c arrays function crash

我正在学习如何用c编写程序:

我想创建一个程序,将一个数字分成数字,从那里我想将它们存储到一个数组中(我已经在下面的代码中完成了)。从那里我需要使用数字打印出数字来帮助生成相同的数字。程序在运行时崩溃,我不知道为什么。

#include <stdio.h>

int power(int a, int b);

int main()
{
    //Issue: printing out incorrect numbers
    //Fix: Recall that c is treated as a character here when getchar is invoked

    #define MAX_SIZE 100
    const int TEN = 10;
    const int ONE = 1;

    int c;
    int digitPos, digitHolder, numberPower = 0;
    int my_strg[MAX_SIZE];


    printf("\n");

    while (((c = getchar()) != EOF) && (c != '\n'))
    {

        my_strg[digitPos] = c - '0';
        digitPos = digitPos + ONE;
    }

    while (digitPos >= 0)
    {
        int toPower = digitPos - 1;
        printf("%10d", power(TEN, toPower));
        digitPos = digitPos - 1;
    }


    return 0;
}

int power(int a, int b)
{
    if (b == 0)
    {
        return 1;
    }
    else
    {
        return a * power(a, b - 1);
    }

}

目前输出是返回输入数字所需的功率,但是在打印之后,程序崩溃。有人可以指导我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

将时间条件while (digitPos >= 0)更改为while (digitPos > 0)

因为当digipos == 0 - &gt; toPower == - 1 - &gt; power(TEN, toPower) CRASH

除了这个小问题,你的代码还不错