我有使用数组创建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;
}
答案 0 :(得分:1)
变量symbols
是char
的数组。它将衰减为指向其第一个元素&symbols[0]
的指针,该元素的类型为char*
。
您声明的函数将其第一个参数作为指向char
数组的指针。指向char
数组的指针与指向char
的指针非常不同。
解决方案是使函数采用与传递时相同的数据类型,即指向char
,char*
的指针。
您还有其他多个问题。例如,您声明的函数(buildTable
和printTable
)当前被声明为这个错误的参数作为第一个参数,然后int
值作为第二个参数。但这并不是你如何称呼这些功能。您需要使用它们的实际参数声明函数,并将它们称为声明。
相关说明:由于您使用C ++编程,请不要将字符数组用于字符串,而是使用std::string
。从长远来看,它会为你节省很多。