2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 помогите начинающему программисту, валится на fscanf!!!
Сообщение07.05.2013, 20:48 
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<locale.h>
#include<windows.h>
#define imya D:\\oaip\\t.txt
struct Tovar
{
char tovar[50];
char firma[50];
char name[50];
int price;
int god_izgotovleniya;
int god_hraneniya;
int kolichestvo;
/*Tovar& operator = (const Tovar &a){
strcpy(tovar, a.tovar);
strcpy(firma, a.firma);
strcpy(name, a.name);
price = a.price;
god_izgotovleniya = a.god_izgotovleniya;
god_hraneniya = a.god_hraneniya;
kolichestvo = a.kolichestvo;
return *this;
}*/
};

void zanos_v_structuru(Tovar *tovar)
{
setlocale(LC_ALL, "Russian_Russia.1251");
int i=0;
FILE *file;
file=fopen("D:\\oaip\\t.txt","r");
Tovar buf;
for(i=0;!feof(file);i++)
{
fscanf(file,"%s",buf.tovar);
strcpy(tovar[i].tovar ,buf.tovar);
fscanf(file,"%s",buf.firma);
strcpy(tovar[i].firma , buf.firma);
fscanf(file,"%s",buf.name);
strcpy(tovar[i].name , buf.name);
fscanf(file,"%d",&buf.price);
tovar[i].price = buf.price;
fscanf(file,"%d",&buf.god_izgotovleniya);
tovar[i].god_izgotovleniya = buf.god_izgotovleniya;
fscanf(file,"%d",&buf.god_hraneniya);
tovar[i].god_hraneniya = buf.god_hraneniya;
fscanf(file,"%d",&buf.kolichestvo);
tovar[i].kolichestvo = buf.kolichestvo;

//tovar[i] = buf;
//strcpy(tovar[i].tovar , buf);
//strcpy(tovar[i].firma , buf);
//strcpy(tovar[i].name , buf);
}
fclose(file);
for( i=0;i<3;i++)
{
printf("\str =%s %s %s %d %d %d %d", tovar[i].tovar,tovar[i].firma,tovar[i].name,tovar[i].price,tovar[i].god_izgotovleniya,tovar[i].god_hraneniya,tovar[i].kolichestvo);
}
}

void main()
{
Tovar *tovar=(Tovar*)calloc(3,sizeof(tovar));
zanos_v_structuru(tovar);
getch();
}

 
 
 
 Re: помогите начинающему программисту, валится на fscanf!!!
Сообщение07.05.2013, 21:17 
А почему вы только feof() проверяете? Могут и другие ошибки произойти, например, если вы забыли какое-нибудь поле. Тогда цикл не закончится, и программа упадёт, когда зайдёт за границы массива.

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group