为什么不是我的可变长度数组转换?

glo*_*pit 2 c arrays function function-calls cs50

我正在编写将采用整数数组的代码,然后可以将其转换为所需的基数,例如base-16.

出于某种原因,终端通过该程序并打印出来

"转换数="

这是我的代码:

#include <stdio.h>
#include <cs50.h>

int convertedNumber[64];
int base;
int digit = 0;

void getNumberAndBase(void) {
    int size;

    printf("How many numbers to be converted??\n");
    size = GetInt();

    int array[size];

    for (int i = 0; i < size; i++) {
        printf("Number to be converted?\n");
        array[i] = GetInt();
    }

    printf("Base?\n");

    do {
        base = GetInt();

        if (base < 2 || base > 16) {
            printf("Bad base - must be between 2 and 16. Try again!\n");
        }
    } while (base < 2 || base > 16);

    void convertNumber(int size, int array[size]);
}

void convertNumber(int size, int numberToConvert[size]) {
    for (int i = 0; i < size; i++) {
        do {
            convertedNumber[digit] = numberToConvert[i] % base;
            digit++;
            numberToConvert[i] /= base;
        } while (numberToConvert[i] != 0);
    }
}

void displayConvertedNumber(void) {
    const char baseDigits[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
    int nextDigit;

    printf("Converted number = ");

    for (--digit; digit >= 0; --digit) {
        nextDigit = convertedNumber[digit];
        printf("%c", baseDigits[nextDigit]);
    }

    printf("\n");
}

int main(void) {
    void getNumberAndBase(void), displayConvertedNumber(void);

    getNumberAndBase();
    displayConvertedNumber();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Sou*_*osh 5

在您的代码中,您从未调用convertNumber()函数.你应该改变getNumberAndBase()函数的最后一部分

void convertNumber(int size, int array[size]);
Run Code Online (Sandbox Code Playgroud)

convertNumber (size, array);
Run Code Online (Sandbox Code Playgroud)

拨打电话.

这就是说,你应该定义convertedNumber,base而且digit里面main(),然后把它们传递一些的函数的参数(能够使用它里面调用的函数).总的来说,它们没有理由成为全球性的.

另外,将函数声明移出main(); 把它们放在文件范围内.