Я написал это, чтобы разобрать файл с числами, где разделитель был просто пространством. Моя цель - прочитать каждый номер файла и сохранить его в соответствующем индексе матрицы A. Итак, первое прочитанное число должно перейти к A [0] [0], второе число - к A [0] [1] и так далее.Прочитать файл с разделителем пробела и точкой с запятой
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main() {
const int N = 5, M = 5;
double A[N*M];
string fname("test_problem.txt");
ifstream file(fname.c_str());
for (int r = 0; r < N; ++r) {
for (int c = 0; c < M; ++c) {
file >> *(A + N*c + r);
}
}
for (int r = 0; r < N; ++r) {
for (int c = 0; c < M; ++c) {
cout << *(A + N*c + r) << " ";
}
cout << "\n";
}
cout << endl;
return 0;
}
Теперь я пытаюсь разобрать файл, как это:
1 ;2 ;3 ;4 ;5
10 ;20 ;30 ;40 ;50
0.1 ;0.2 ;0.3 ;0.4 ;0.5
11 ;21 ;31 ;41 ;5
1 ;2 ;3 ;4 ;534
, но он будет печатать (при этом чтение) мусор. Что мне делать?
EDIT
Вот моя попытка в C, который также не:
FILE* fp = fopen("test_problem.txt", "r");
double v = -1.0;
while (fscanf(fp, "%f ;", &v) == 1) {
std::cout << v << std::endl;
}
-1 всегда будет напечатано.
Все '* (А + Н * С + г) 'может быть изменен в' A [N * с + г ] '. – timrau
Вам нужно дать лучший тестовый пример, чтобы проиллюстрировать, что именно вы пытаетесь сделать. Поскольку вопрос в настоящее время написан, я мог бы просто написать программу, которая читает каждый третий символ в каждой строке, что, я думаю, не то, что вы хотите. –
timrau, правда, но это не должно быть проблемой. @RedRoboHood Я отредактировал с моей целью. Я думаю, что тестовый пример хорош, я хочу заполнить матрицу номерами файла. – gsamaras