1.Последнюю фамилию выводит два раза подряд в чем причина? 2. Не получается вывести фамилию которая расположена между двумя задаными.
Код:
#include <stdio.h>
#include <conio.h>
main()
{
char fam1[10],fam2[10],fam3[10],fam4[10],fam5[10];
int n,m;
FILE *f;
struct stud {
char fam[10];
char name[10];
char group[10];
int gr;
int sr;
int nomer;
};
stud st[5]={{"Maltsev","Igor","SM-12-1",1994,4,1},
{"Mirnik","Oleg","SM-12-1",1993,4,2},
{"Lokimir","Nikita","SM-12-2",1994,5,3},
{"Cidorov","Alex","SM-12-1",1993,3,4},
{"Cidorka","Artem","SM-12-1",1993,4,5}},s; //--->Эта фамилия выводится два раза
f=fopen("lab2.dat","w");
for(int i=0;i<5;i++){
fwrite(&st[i],sizeof(stud),1,f);}
fclose(f);
f=fopen("lab2.dat","r");
while (!feof(f)) {
fread(&s,sizeof(stud),1,f);
printf("%s,%s,%s,%i,%i,%i\n\n",s.fam,s.name,s.group,s.gr,s.sr,s.nomer);};
fclose(f);
printf("Vedite famalie 1:\n");
scanf("%s",&fam1);
printf("Vedite famalie 2:\n");
scanf("%s",&fam2);
if (fam1=="Maltsev") n=1;
if (fam1=="Mirnik") n=2;
if (fam1=="Lokimir") n=3;
if (fam1=="Cidorov") n=4;
if (fam1=="Cidorka") n=5;
if (fam2=="Maltsev") m=1;
if (fam2=="Mirnik") m=2;
if (fam2=="Lokimir") m=3;
if (fam2=="Cidorov") m=4;
if (fam2=="Cidorka") m=5;
//Выдача фамилии расположеной между задаными.
f=fopen("lab2.dat","r");
while (!feof(f))
{
fread(&s,sizeof(stud),1,f);
if ((s.nomer>n)&&(s.nomer<m))
{
printf("%s,%s,%s,%i,%i\n\n",s.fam,s.name,s.group,s.gr,s.sr);
}
else {printf("Good");};
};
fclose(f);
getch();
}
#include <conio.h>
main()
{
char fam1[10],fam2[10],fam3[10],fam4[10],fam5[10];
int n,m;
FILE *f;
struct stud {
char fam[10];
char name[10];
char group[10];
int gr;
int sr;
int nomer;
};
stud st[5]={{"Maltsev","Igor","SM-12-1",1994,4,1},
{"Mirnik","Oleg","SM-12-1",1993,4,2},
{"Lokimir","Nikita","SM-12-2",1994,5,3},
{"Cidorov","Alex","SM-12-1",1993,3,4},
{"Cidorka","Artem","SM-12-1",1993,4,5}},s; //--->Эта фамилия выводится два раза
f=fopen("lab2.dat","w");
for(int i=0;i<5;i++){
fwrite(&st[i],sizeof(stud),1,f);}
fclose(f);
f=fopen("lab2.dat","r");
while (!feof(f)) {
fread(&s,sizeof(stud),1,f);
printf("%s,%s,%s,%i,%i,%i\n\n",s.fam,s.name,s.group,s.gr,s.sr,s.nomer);};
fclose(f);
printf("Vedite famalie 1:\n");
scanf("%s",&fam1);
printf("Vedite famalie 2:\n");
scanf("%s",&fam2);
if (fam1=="Maltsev") n=1;
if (fam1=="Mirnik") n=2;
if (fam1=="Lokimir") n=3;
if (fam1=="Cidorov") n=4;
if (fam1=="Cidorka") n=5;
if (fam2=="Maltsev") m=1;
if (fam2=="Mirnik") m=2;
if (fam2=="Lokimir") m=3;
if (fam2=="Cidorov") m=4;
if (fam2=="Cidorka") m=5;
//Выдача фамилии расположеной между задаными.
f=fopen("lab2.dat","r");
while (!feof(f))
{
fread(&s,sizeof(stud),1,f);
if ((s.nomer>n)&&(s.nomer<m))
{
printf("%s,%s,%s,%i,%i\n\n",s.fam,s.name,s.group,s.gr,s.sr);
}
else {printf("Good");};
};
fclose(f);
getch();
}
Код:
printf("Vedite famalie 1:\n");
scanf("%s",&fam1);
printf("Vedite famalie 2:\n");
scanf("%s",&fam2);
if (fam1=="Maltsev") n=1;
if (fam1=="Mirnik") n=2;
if (fam1=="Lokimir") n=3;
if (fam1=="Cidorov") n=4;
if (fam1=="Cidorka") n=5;
if (fam2=="Maltsev") m=1;
if (fam2=="Mirnik") m=2;
if (fam2=="Lokimir") m=3;
if (fam2=="Cidorov") m=4;
if (fam2=="Cidorka") m=5;
scanf("%s",&fam1);
printf("Vedite famalie 2:\n");
scanf("%s",&fam2);
if (fam1=="Maltsev") n=1;
if (fam1=="Mirnik") n=2;
if (fam1=="Lokimir") n=3;
if (fam1=="Cidorov") n=4;
if (fam1=="Cidorka") n=5;
if (fam2=="Maltsev") m=1;
if (fam2=="Mirnik") m=2;
if (fam2=="Lokimir") m=3;
if (fam2=="Cidorov") m=4;
if (fam2=="Cidorka") m=5;
можно подробнее, пожалуйста
по ссылке пример есть
Код:
//сравнивает две строки по символьно
//== если совпало
// <> если нет
if(strcmp(fam1,st[index])==0)
{
//тут условие
}
//== если совпало
// <> если нет
if(strcmp(fam1,st[index])==0)
{
//тут условие
}
ошибка у вас при чтения из файла, попробуйте так:
Код:
f=fopen("lab2.dat","r");
fread(&s,sizeof(stud),1,f);
while (!feof(f)) {
printf("%s,%s,%s,%i,%i,%i\n\n",s.fam,s.name,s.group,s.gr,s.sr,s.nomer);
fread(&s,sizeof(stud),1,f);
}
fclose(f);
fread(&s,sizeof(stud),1,f);
while (!feof(f)) {
printf("%s,%s,%s,%i,%i,%i\n\n",s.fam,s.name,s.group,s.gr,s.sr,s.nomer);
fread(&s,sizeof(stud),1,f);
}
fclose(f);