#include <stdio.h>
#include <conio.h>
#include <Windows.h>
void file_open(char file_name[]);
void tabl();
struct strani{
int year;
float USA;
float England;
float France;
float USSR;
}tab[100];
void main()
{
FILE * pfile;
char fname[15];
system("chcp 1251");
printf("Введите имя файла: ");
scanf("%s",&fname);
file_open(fname);
getch();
}
void file_open(char file_name[]){
FILE * file;
int i=0;
if((file=fopen(file_name,"r"))==NULL){
printf("Файл не найден\n");
getch();
exit(-1);
}
while(fscanf(file,"%d",&tab.year)!=EOF){
fscanf(file,"%d",&tab.year);
fscanf(file,"%d",&tab.USA);
fscanf(file,"%d",&tab.England);
fscanf(file,"%d",&tab.France);
fscanf(file,"%d",&tab.USSR);
i++;
}
fclose(file);
}
void tabl(){
printf("----------------------------------\n");
printf("|Год |США|Англия|Франция|СССР|\n");
printf("-----------------------------------\n");
}
Си
Из файла считать данные в структуру и вывести все это на экран, как таблицу.
Не могу нормально считать данные из файла в сруктуру. Вот код , подскажите, что не так.И вот следующим образом я записую данные в файл:
1961 2.4 4.2 6.3 3.2 1962 2.1 4.7 6.3 3.1 1963 4.1 3.4 5.3 7.2 1964 5.2 5.3 3.3 5.3
Заранее благодарен.
Код:
Я не программист на Си, но что-то мне подсказывает, что в строчках, подобных fscanf(file,"%d",&tab.France) использовать %d не верно, т.к. вы считываете так-то дробные числа. Надо %f.
Цитата: g00dv1n
Задание
Из файла считать данные в структуру и вывести все это на экран, как таблицу.]
Из файла считать данные в структуру и вывести все это на экран, как таблицу.]
Скорее всего ошибка сдесь
Код:
while(fscanf(file,"%d",&tab.year)!=EOF)
Попробуйте так:
Код:
while(!feof(file))
Если есть мусор, то можно так попробовать.
Код:
fscanf(file,"%d",&tab.year);
.....
while(!feof(file))
{
i++;
fscanf(file,"%d",&tab.year);
........
}
.....
while(!feof(file))
{
i++;
fscanf(file,"%d",&tab.year);
........
}
замените следующее и все будет работать
Цитата:
printf("начало считывания\n");
while(!feof(file))
{
fscanf(file,"%i",&tab.year);
fscanf(file,"%f",&tab.USA);
fscanf(file,"%f",&tab.England);
fscanf(file,"%f",&tab.France);
fscanf(file,"%f",&tab.USSR);
i++;
}
printf("конц считывания\n");