Я прочитал тему How to extract data from a file in C, но у меня все еще есть проблемы с извлечением данных из файла на C, потому что у меня есть точный запрос. Вот пример .txt, который мне нужно иметь дело:Извлечение данных из .txt в c
2
3
x x y z
x x y z
x x y z
4 5
Два первых целых числа важны. Поскольку сначала мы имеем 2 (= M) и 3 (= N) в этом порядке, это означает, что квадрат, следующий за этими числами, имеет формат Nx (M + 2), т. Е. N число строк и M + 2 число столбцов и последняя строка будут иметь номера M.
Я предполагаю, что x, y и z - числа двойной точности, чтобы выделить то, что я хочу извлечь.
Моя цель - получить код, который будет сгенерирован: M = 2; N = 3; х [N], [М] = {{х, х}, {х, х}, {х, х}}; у [Н] = {у, у, у}; z [N] = {z, z, z}; t [M] = {4,5}; для любых входов в файлы.
Вот что я пытался, но он не работает, потому что я думаю, я не знаю, как управлять положение, в котором мы читаем файл:
long i,j,M,N;
FILE *f;
f=fopen("file.txt","r");
fscanf(f,"%ld %ld",&M,&N);
double x[M][N],y[N],z[N],t[M];
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
fscanf(f,"%g",&x[i][j]);
fscanf(f,"%g",&y[i]);
fscanf(f,"%g",&z[i]);
}
for(j=0;j<M;j++)
fscanf(f,"%g",&t[j]);
Вместо того, чтобы внутренний цикл сделать 'N + 2' итераций, прочитать х годов первым в цикле, а затем прочитать' 'y' и z' более двух' fscanf's. – DyZ
warning: 'else if (j = N)' -> 'else if (j == N)' –
Кроме того, ваше описание файловой структуры запутывает. Пожалуйста, измените его. –