“无法将char *转换为char(*)[95]”错误

时间:2018-05-21 02:36:07

标签: c++ arrays compiler-errors

我有使用数组创建ASCII表的代码。由于错误,我无法编译代码:

  

无法将'char *'转换为char(*)[95]以将参数'1'转换为void buildTable(char(8)[95],int)

  

无法将参数'1'的std :: ofstream转换为char(*)[95]为'void printTable(char(8)[95],int)

#include <iomanip>
#include <iostream> 
#include <fstream> 

int main () {
    const int MAX_SIZE = 95;
    char symbols[MAX_SIZE];
    int values[MAX_SiZE], int values);
    void buildTable (char [][MAX_SIZE], int values);
    void printTable (char [][MAX_SIZE], int values);
    void output(std::fstream, std::string, double); 

    std::string line;

    std::ofstream outputFile;
    outputFile.open("ascii.log");
    if(outputFile.fail()) {
        std::cout << "Error opening file. \n";
        return 1;
    }
    else {
        buildTable (symbols, values, MAX_SIZE);
        printTable (outputFile, symbols, values, MAX_SIZE);
    }
    outputFile.close();
    return 0;
}

1 个答案:

答案 0 :(得分:1)

变量symbolschar的数组。它将衰减为指向其第一个元素&symbols[0]的指针,该元素的类型为char*

您声明的函数将其第一个参数作为指向char数组的指针。指向char数组的指针与指向char的指针非常不同。

解决方案是使函数采用与传递时相同的数据类型,即指向charchar*的指针。

您还有其他多个问题。例如,您声明的函数(buildTableprintTable)当前被声明为这个错误的参数作为第一个参数,然后int值作为第二个参数。但这并不是你如何称呼这些功能。您需要使用它们的实际参数声明函数,并将它们称为声明。

相关说明:由于您使用C ++编程,请不要将字符数组用于字符串,而是使用std::string。从长远来看,它会为你节省很多。