Задача реализовать на С/C++ такую вещь: есть файл, состоящий из двух столбцов чисел, разделенных одним пробелом, например: 4.3432 7.212331 0.121231 8.3213321 -16.3234 6.324342 ... Числа из первого столбца надо поместить в массив a, а из второго - в b, заранее определив их размер. Есть набросок кода: Код (Text): #include <stdio.h> #include <iostream.h> int main () { FILE * f = fopen("myfile.txt","r"); int i,n; fscanf(f,"%d %d",&i,&n); fclose(f); cout << "That is " << i << " and " << n << endl; return 0; } Там, правда, пока не массив, но это не суть. Главное, что я не понимаю, как добраться до чисел в следующих строках, прочитать их и занести в какую-нибудь переменную (лучше - элемент массива).
Saessie Код (Text): #include <stdio.h> #include <stdlib.h> #define INC_COUNT 10 int main(void) { size_t max_count = 0, count = 0, i; float *a1 = NULL, *a2 = NULL; while (!feof(stdin)) { if (count == max_count) { max_count += INC_COUNT; a1 = (float *) realloc(a1, sizeof(float) * max_count); a2 = (float *) realloc(a2, sizeof(float) * max_count); } a1[ count ] = 0.f; a2[ count ] = 0.f; fscanf(stdin, "%g %g", &a1[ count ], &a2[ count ]); count++; } for (i = 0; i < count; i++) fprintf(stdout, "a1[ %u ] = %g\ta2[ %u ] = %g \n", i, a1[i], i, a2[i]); return 0; }
Вот сам доделал: полный текст: Код (Text): #include <stdio.h> #include <iostream.h> #include <math.h> int main () { FILE *fp; int i,n; int numChars = 0; // number of all symbols int numLines = 0; // number of all lines char buff[512];//massiv dlya vvoda symvolov size_t num; fp = fopen("myfile.txt","r"); if (fp == 0) { printf("Unable to open file. Terminating...\n"); exit(1); } while ((num = fread(buff,1,512,fp)) > 0)//reading 512-symbols block. num is the number of read symbols. { // numChars += num; // number of lines: for (i=0;i<num;++i) { if (buff[i] == '\n') { ++numLines; } } } fclose(fp); // printf("Number of symbols in file = %d\n",numChars); printf("Number of lines in file = %d\n",numLines); float x[numLines],y[numLines]; fp = fopen("myfile.txt","r"); for(i=0;i<numLines;i++) { fscanf(fp,"%f %f",&x[i],&y[i]); } fclose(fp); printf("Done! Checking:\n"); for(i=0;i<numLines;i++) { printf("%f %f\n",x[i],y[i]); } return 0; }