Построчное чтение данных из файла - C (СИ)
Формулировка задачи:
Есть фаил:
С него построчно нужно прочитать данные и записать их в структуру.
Написал код, все вроде работает, но почему-то поле имя записывается неправильно, только последняя строка содержит корректные данные, в чем дело?
Вот код:
И ещё, нужно как то перераспределить память на структуру, ни как от не дойдёт как это сделать!
selulhmb 83 86 77 82 glrdos 54 48 3 35 canryx 15 59 5 26 cdqqri 45 0 66 37 bxdsj 49 62 14 41 cjdevlycv 98 29 50 59 sutmnk 73 82 10 55 urmik 33 39 63 45 bvdfffr 88 33 39 53 dksxblo 16 68 32 38
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> struct spisok { char *name; int mat; int fiz; int inf; int med; }; int main(void) { struct spisok *st, *out; st = (struct spisok *) malloc( 10 * sizeof(struct spisok) ); int i, b=0, n=1; // Get data FILE *f2; if (( f2 = fopen("spisok_in.txt","r")) == NULL){ fprintf(stderr, "Error openning file"); exit(1); }; //st = (struct spisok *) malloc( n * sizeof(struct spisok) ); char *her; her = (char *) malloc( 100 * sizeof(char) ); int qq,ww,ee,rr; for (i=0; feof(f2) == 0; i++){ fscanf(f2,"%s %d %d %d %d\n", &her[i],&qq,&ww,&ee,&rr); printf("%d - %s %d %d %d %d\n",i, &her[i],qq,ww,ee,rr); (st+i)->name = &her[i]; (st+i)->mat = qq; (st+i)->fiz = ww; (st+i)->inf = ee; (st+i)->med = rr; //her = (char *) realloc( her, (i+1) * sizeof(char) ); //st = (struct spisok *) malloc( (1+i) * sizeof(struct spisok) ); //(out+i)->name = &her[i]; //if (i=100) break; } for(i=0; i<10; i++,st++){ printf("|%16s|%5d|%5d|%5d|%5d|\n", st->name, st->mat, st->fiz, st->inf, st->med); } fclose(f2); }
Решение задачи: «Построчное чтение данных из файла»
textual
Листинг программы
| selulhmb| 83| 86| 77| 82| | sglrdos| 54| 48| 3| 35| | sgcanryx| 15| 59| 5| 26| | sgccdqqri| 45| 0| 66| 37| | sgccbxdsj| 49| 62| 14| 41| | sgccbcjdevlycv| 98| 29| 50| 59| | sgccbcsutmnk| 73| 82| 10| 55| | sgccbcsurmik| 33| 39| 63| 45| | sgccbcsubvdfffr| 88| 33| 39| 53| |sgccbcsubdksxblo| 16| 68| 32| 38|
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д