Как прочесть массив из файла бинарно на c++, используя c-шный метод?
Есть файл 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]);
}
