Как прочесть массив из файла бинарно на c++, используя c-шный метод?

Выходит вот такая ошибка, когда я пытаюсь использовать fread

Есть файл data.dat имеющий вот такой вид:

a11->7 a12->2 a13->4 a14->0 a15->9 a16->9 a17->0 a18->8 a19->5 <br/>
a21->3 a22->2 a23->4 a24->0 a25->6 a26->6 a27->9 a28->3 a29->3 <br/>
a31->8 a32->2 a33->5 a34->1 a35->4 a36->0 a37->3 a38->7 a39->0 <br/>
a41->2 a42->4 a43->6 a44->2 a45->5 a46->3 a47->9 a48->5 a49->2 <br/>
a51->8 a52->8 a53->5 a54->0 a55->2 a56->5 a57->4 a58->6 a59->4 <br/>
a61->9 a62->5 a63->4 a64->9 a65->3 a66->8 a67->1 a68->9 a69->9 <br/>
a71->0 a72->6 a73->0 a74->0 a75->0 a76->2 a77->3 a78->8 a79->6 <br/>
a81->7 a82->1 a83->9 a84->0 a85->6 a86->5 a87->3 a88->5 a89->0 <br/>
a91->7 a92->3 a93->5 a94->6 a95->4 a96->7 a97->4 a98->0 a99->0 <br/>

Я хотел каждый элемент добавить в вектор mass.


Ответы (1 шт):

Автор решения: Sergey

Очень прошу Вас никогода не вставлять скриншоты в текст вопроса. Это сильно мешает тем, кто хотел бы Вам ответить.

А по сути:

#include <stdio.h>

int main(int argc, char *argv[]) {

int mass[100] = {0};
char buffer[256];
int pos_1, pos_2, pos_3, pos_4, pos_5, pos_6, pos_7 ,pos_8, pos_9;
int val_1, val_2, val_3, val_4, val_5, val_6, val_7, val_8, val_9;
FILE *fd;
int j;

    // Открываем файл данных на чтение
    fd = fopen("data.dat", "r");
    if (fd == NULL) {
        printf("Ошибка при открыти файла!\n");
        return -1;
    } 

    // Читаем, пока есть строки в файле
    while (fgets(buffer, 256, fd)) {
        // Полученную строку разбираем на элементы
        sscanf(buffer, "a%2d->%1d a%2d->%1d a%2d->%1d a%2d->%1d a%2d->%1d a%2d->%1d a%2d->%1d a%2d->%1d a%2d->%1d",
        &pos_1, &val_1, &pos_2, &val_2, &pos_3, &val_3, &pos_4, &val_4, &pos_5, &val_5, &pos_6, &val_6, &pos_7, &val_7, &pos_8, &val_8, &pos_9, &val_9);
        // Выполняем присваивание элементам массива
        mass[pos_1] = val_1;
        mass[pos_2] = val_2;
        mass[pos_3] = val_3;
        mass[pos_4] = val_4;
        mass[pos_5] = val_5;
        mass[pos_6] = val_6;
        mass[pos_7] = val_7;
        mass[pos_8] = val_8;
        mass[pos_9] = val_9;
    }

    // Печатаем рензультат
    for(j=0; j<100; j++) printf("mass[%d] = %d\n", j, mass[j]);
}
 
→ Ссылка