ИО
Ирина Осипова

C, как считать из файла в структуру текст и числа по отдельности

Здравствуйте, итак у меня такая проблема - делаю программку для чтения текст файла в котором первое слово а после него 12 десятичных чисел типа (ХХ. Х) .
В выходящем файле у меня только слова а после них только 1ая цифра из всей строчки, тоесть мой код сразу перескакивает на следующую строку после того как прочитал цифру. Может кто подсказать в чем я ошибся? Вот код :

#include
#include
#include
#define L 20
#define N 10
#define F 12
struct city
{
char name[20];
float ther[12];
};
typedef struct city poli;
void filltb(FILE *tfi,poli str[N]);
void show(FILE *tfo,poli str[N]);
//void shown(char *s, int x);

void main()
{
FILE *tfi,*tfo;
float avg[10];
char months[12][4] = {"JAN\0","FEB\0","MAR\0","APR\0","MAY\0","JUN\0",
"JUL\0","AUG\0","SEP\0","OCT\0","NOV\0","DEC\0"};
poli str[N];
tfi=fopen("c:\\text.txt","r");
tfo=fopen("c:\\erg.txt","w+");
clrscr();
filltb(tfi,str);
show(tfo,str);
fclose(tfi);
fclose(tfo);
getch();
return 0;
}

void filltb(FILE *tfi,poli str[N]) //функция считывающая инфу из файла
{
int i,j;
for (i = 1; i <= 10; i++)
{
fscanf(tfi,"%s",str.name);
for (j = 1; j <= 12; j++)
{
fscanf(tfi,"%f",&str.ther[j]);
}
}
}

void show(FILE *tfo,poli str[N] ) //функция печатающая результат чтения из исходника
{

int i,j;
for (i = 1; i <= 10; i++)
{

//shown(str.name,L);
fprintf(tfo,"%s ",str.name);
for (j = 1; j <= 12; j++)
{
fprintf(tfo," %3.1f",str.ther[j]);
if (j=12) fprintf(tfo,"\n");

}
}
}

/*void shown(char *s, int x)
{
int n, i;
n = x - strlen(s);
for (i=1; i<=n; i++)
strcat(s," ");
}*/

Вот то что я считываю:
XANTHI 15.8 14.9 16.2 17.4 18.9 25.3 28.8 31.7 21.4 19.5 17.5 15.1
KAVALA 15.6 13.8 16.9 18.2 19.3 26.7 29.5 33.4 22.5 18.4 17.5 14.2
DRAMA 13.5 12.3 15.8 17.3 18.2 24.9 28.9 30.1 21.7 17.1 15.8 13.8
THESSALONIKI 15.9 14.2 17.3 19.4 21.5 17.9 30.6 34.2 24.1 19.6 18.2 14.7
SERRES 16.1 14.7 17.9 19.9 21.8 18.1 30.7 34.6 24.1 19.8 18.7 14.9
LARISA 16.3 15.9 17.8 19.8 22.2 18.3 30.8 35.1 25.5 20.5 19.8 15.3
IOANNINA 14.8 14.2 16.1 18.2 20.3 17.2 27.4 30.5 22.5 19.3 16.9 14.2
ATHENS 15.6 15.2 17.2 20.8 23.1 17.9 30.2 33.5 24.8 19.2 17.8 14.9
SPARTI 16.2 14.7 17.2 19.1 22.7 19.1 29.8 34.3 24.7 20.1 19.1 15.3
HERAKLION 18.3 17.1 19.6 22.4 25.3 30.2 32.4 36.3 31.5 22.7 21.5 19.4

Вот результат:
XANTHI 15.8
KAVALA 15.6
DRAMA 13.5
THESSALONIKI 15.9
SERRES 16.1
LARISA 16.3
IOANNINA 14.8
ATHENS 15.6
SPARTI 16.2
HERAKLION 18.3

Да, насчет массивов я в курсе, это очень сыроой код как только все будет работать как положено, исправлю на стандарты. Сейчас улетаю в универ у меня экзамены . Проверю то что ты скинул как вернусь, кстати проблема в считывании из файла, тока я не допираю в чем я ошибся.

АС
Алишер Сахибназаров

для начала дебага добавь: считал кусочек - сразу выплюнул на экран.
то же на запись.
код - на pastebin.com

да, и еще: массивы с 0 начинаются, а не с 1

Похожие вопросы
Вопрос по структурам в C++
c# ошибка при чтении структуры из файла
Как считать весь stdin/файл в c++?
C++. Как вывести числа из массива char в файл.?
Чтение структуры из файла C++
C++ Есть ли "инструменты" что бы редактировать структуру PE файлов?
C++ считать float числа из файла
c++ Как из файла считать строку N
c# обращение к элементу структуры в Листе структур
C++ классы и структуры