Имеется файл (например, myfile.txt) с этим содержимым (всегда три строки):
0 2 5 9 10 12
0 1 0 2 4 1 2 3 4 2 1 4
2 3 3 -1 4 4 -3 1 2 2 6 1
Как мы можем проанализировать файл, чтобы он был сохранен
в массивах, как если бы они были жестко запрограммированы таким образом:
int Line1[] = { 0, 2, 5, 9, 10, 12 };
int Line2[] = { 0, 1, 0, 2, 4, 1, 2, 3, 4, 2, 1, 4 };
double Line3[] = { 2, 3, 3, -1, 4, 4, -3, 1, 2, 2, 6, 1 };
Обновление : на основе комментариев wrang-wrang.
Я в настоящее время застрял с этим кодом.
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main ( int arg_count, char *arg_vec[] ) {
int ch;
FILE * fp;
int i;
if (arg_count <2) {
printf("Usage: %s filename\n", arg_vec[0]);
exit(1);
}
//printf("%s \n\n", arg_vec[i]); // print file name
if ((fp = fopen(arg_vec[1], "r")) == NULL) { // can't open file
printf("Can't open %s \n", arg_vec[1]);
exit(1)
}
const unsigned MAX_N=1000;
int Line1[MAX_N];
int Line2[MAX_N];
double Line3[MAX_N];
unsigned N3=0;
// Parsing content
while ((ch = fgetc(fp)) != EOF) {
if (ch=='\n' || ch=='\r') break;
ungetc(ch,fp);
assert(N3<MAX_N);
fscanf(fp, " %1f", &Line3[N3++]);
// not sure how to capture line 1 and 2 for
// for array Line1 and Line2
}
fclose(fp);
// This fails to print the content the array
for (int j=0; j <Line3; j++) {
printf(Line3[j],"\n");
}
return 0;
}
В принципе у меня проблема в:
- Поиск способов назначения каждой строки правильному массиву.
- Распечатка содержимого массива (для проверки).