Ошибка «Не удалось преобразовать char * в char (*) [95]» - PullRequest
0 голосов
/ 21 мая 2018

У меня есть код для использования массива для создания таблицы ASCII.У меня проблемы с компиляцией кода из-за ошибок:

не может преобразовать 'char *' в char (*) [95] для аргумента '1' в void buildTable (char (8) [95], int)

и

не может преобразовать std :: ofstream в char (*) [95] для аргумента '1' в '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 голосов
/ 21 мая 2018

Переменная symbols представляет собой массив char.Он преобразуется в указатель на свой первый элемент &symbols[0], который будет иметь тип char*.

Объявленные вами функции принимают первый параметр в качестве указателя на массив char.Указатель на массив char очень отличается от указателя на char.

Решение состоит в том, чтобы функция принимала тот же тип данных, что и вы, т.е. указатель на char, char*.

У вас также есть несколько других проблем.Например, объявленные вами функции (buildTable и printTable) в настоящее время объявляются этим неправильным аргументом в качестве первого аргумента, а затем int значением в качестве второго аргумента.Но это не то, как вы называете эти функции.Вам нужно объявить функции с их фактическими аргументами и вызвать их как объявленные.


На заметку по теме: Поскольку вы программируете на C ++, пожалуйста, не используйте массивы символов для строк, используйте std::stringвместо.Это спасет вас в долгосрочной перспективе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...