Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

1.Последнюю фамилию выводит два раза подряд в чем причина? 2. Не получается вывести фамилию которая расположена между двумя задаными.

86K
04 февраля 2013 года
coder94
5 / / 26.01.2013
Код:
#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();
}
277
04 февраля 2013 года
arrjj
1.7K / / 26.01.2011
Код:
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;
strcmp же
86K
04 февраля 2013 года
coder94
5 / / 26.01.2013
можно подробнее, пожалуйста
277
04 февраля 2013 года
arrjj
1.7K / / 26.01.2011
по ссылке пример есть
392
06 февраля 2013 года
cronya
421 / / 03.01.2009
 
Код:
//сравнивает две строки по символьно
//== если совпало
// <> если нет
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);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог