Ошибка чтения матрицы, записанной в файл C ++ - PullRequest
0 голосов
/ 26 сентября 2019

У меня проблемы с чтением массива, который я записал в файл с использованием c ++.Это возвращает мусор.В этой работе мы должны сгенерировать виртуальный жесткий диск, с начала код должен записать 0 во все строки первого столбца, а во второй столбец должен записать 0 в строку 20, после этого значение файла 1..txt (уменьшен размер строк и столбцов):

00
00
00
00
00
01
01
01
01
01

Для тестирования вы можете выполнить следующее:

  • Введите createhd (что угодно)
  • Введите create (что угодно))

Это ошибка:

enter image description here

А это мой код:

#include <iostream>
#include <string>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <fstream>
#include <windows.h>
#include <string>

using namespace std;

ifstream filer;
ofstream filew;
char HD[100];

void criaHD(char str[100], int i)
{
    int j = 0;
    while (str[i] != '\0')
    {
        HD[j] = str[i];

        if (str[i + 1] == '\0')
        {
            HD[j + 1] = str[i + 1];
        }
        i++;
        j++;

    }

    cout << "# " << HD << "> ";

    strcat(HD, ".txt");
    filew.open(HD);

    for (int l = 1; l < 40; l++)
    {
        for (int c = 1; c < 33; c++)
        {
            if (c == 1)
                filew << "0";

            else if (c == 32)
                filew << "\n";

            else if (c == 2 && l < 21)
                filew << "0";

            else if (c == 2 && l > 20)
                filew << "1";
            else
                filew << " ";

        }
    }

    filew.close();

}

void criaArquivo(char str[100])
{
    int i = 0;
    int j = 0;
    char matriz[40][33];
    filer.open(HD);

    for (i = 0; i < 40; i++)
    {
        for (j = 0; j < 33; j++)
        {
            filer >> matriz[i][j];
            cout << matriz[i][j];
        }

    }
    filer.close();

}

int main(int argc, char *argv[])
{
    char str[100];
    char HD[100];
    char createHd[9] = "createhd";

    char arquivo[100];
    char nome[100];
    char create[7] = "create";
    cout << "# ";
    gets(str);
    fflush(stdin);
    int i = 0, j = 0;

    while (str[i] == createHd[i] && str[i] != '\0')
    {
        i++;
    }

    if (i == 8)
    {
        i++;
        criaHD(str, i);

    }
    else
    {
        cout << "Não foi possivel criar o HD";
    }

    gets(arquivo);
    fflush(stdin);

    while (arquivo[j] == create[j] && arquivo[j] != '\0')
    {
        j++;
    }

    if (j == 6)
    {
        j++;
        criaArquivo(arquivo);
    }

    system("pause");
    return 0;
}

Я перепробовал все, но все идет не так, пишет правильно, но когда вы читаете, печатаете на консоли.

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