Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2013, 20:23   #1
Drago56
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 91
По умолчанию Поиск по файлу

Записал в файл труктуру, а выводит на экран её криво как то.И подскажите как сделать поиск из файла допустим по улице проживания
Код:
#include<stdio.h>
#include <conio.h>
#include<stdlib.h>
#include<string.h>
struct {
       char FIO[50];
       int Data;
       int Namber_Tel;
       char Adres[50];
       int Namber_Karta;
       }Patients[50]={ 
       {"Birukov E.F",1992,2761,"Ogorodnay 25",111111},
       {"Antipov G.D",1999,4587,"Sadovay 33",123456},
       {"Lukonenko V.A",1991,8575,"Ogorodnay 35",187592},
       {"Mihailov H.F",1990,5756,"Intuziastov 3",875429},
       {"kylikov E.V",1977,1384,"Kirpichnay 96",754381},
       {"Kovolev P.G",1995,3498,"Ulina 3",784512},
       {"Putin J.L",1985,1020,"Souznay 1",371982},
       {"Medvedev F.F",1979,4785,"Mostovay 10",467319},
       {"Berg R.N",1999,6385,"Gagarina 99",825946},
       {"Lukoshenko X.G",1997,1759,"Ordjanikigze 12",167346} 
       };

struct {
       char st[20];
       }Stolbec[5]={ {"FIO"},{"Year"},{"TeLL"},
                    {"Adress"},{"Med_Karta"} 
                  };

main()
{
FILE *f,*f2;
int i,file_peremen,Namber_Peremen_File,q=0;
int rez,k=0,c;//dla 3
char adress;
//Zadaza 1
puts("Spiski patientov:");

printf("\n%10s %12s %8s %15s %15s\n",Stolbec[0].st,Stolbec[1].st,Stolbec[2].st,Stolbec[3].st,Stolbec[4].st);
for(i=0;i<10;i++)
printf("\n%15s %7d %8d %18s %10d",Patients[i].FIO,Patients[i].Data,
Patients[i].Namber_Tel,Patients[i].Adres,Patients[i].Namber_Karta);

puts("\n\n\n Priznak  poyvlenie struktur iz sluchai.dat: Vvozrost starse 1992 goda"); 
f=fopen("sluchai.dat","r");
fscanf(f,"%d",&Namber_Peremen_File);
file_peremen=Namber_Peremen_File;
fclose(f);

f2=fopen("BOSS.txt","w");
printf("\n%10s %12s %8s %15s %15s\n",Stolbec[0].st,Stolbec[1].st,Stolbec[2].st,Stolbec[3].st,Stolbec[4].st);
for(i=0;i<10;i++)
if(Patients[i].Data<file_peremen) 
  {
     printf("\n%15s %7d %8d %18s %10d",Patients[i].FIO,Patients[i].Data,
     Patients[i].Namber_Tel,Patients[i].Adres,Patients[i].Namber_Karta);
     
     fprintf(f2,"\n%15s %7d %8d %18s %10d",Patients[i].FIO,Patients[i].Data,
     Patients[i].Namber_Tel,Patients[i].Adres,Patients[i].Namber_Karta);
     q++; 
  } 
puts("\n");  
//zadacha 2  
fclose(f2);

//zada4a 3
printf("Vvedite to4niy adres patienta:");scanf("%s",&adress);
i=0;
f2=fopen("BOSS.txt","r");
rez=fscanf(f2,"%15s %7d %8d %18s %10d",Patients[i].FIO,&Patients[i].Data,
&Patients[i].Namber_Tel,Patients[i].Adres,&Patients[i].Namber_Karta);
 while(rez!=EOF)
  {
printf("\n%15s %7d %8d %18s %10d",Patients[i].FIO,Patients[i].Data,
 Patients[i].Namber_Tel,Patients[i].Adres,Patients[i].Namber_Karta);
  i++;
  rez=fscanf(f2,"%15s %7d %8d %18s %10d",Patients[i].FIO,&Patients[i].Data,
  &Patients[i].Namber_Tel,Patients[i].Adres,&Patients[i].Namber_Karta);
  
  }

fclose(f2);


getch();
}
Drago56 вне форума Ответить с цитированием
Старый 10.06.2013, 21:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
криво как то
Ну например...
Цитата:
как сделать поиск из файла допустим по улице проживания
Код:
 
char *see="Лейтенанта Шмидта";
while(rez!=EOF)
  {
 if(strstr(s,&Patients[i].Adres)) {

printf("\n%15s %7d %8d %18s %10d",Patients[i].FIO,Patients[i].Data,
 Patients[i].Namber_Tel,Patients[i].Adres,Patients[i].Namber_Karta);
}

  i++;
  rez=fscanf(f2,"%15s %7d %8d %18s %10d",Patients[i].FIO,&Patients[i].Data,
  &Patients[i].Namber_Tel,Patients[i].Adres,&Patients[i].Namber_Karta);
  
  }
Если не ошибаюсь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2013, 21:43   #3
Drago56
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 91
По умолчанию

Ну криво значит,допустим есть списки людей идут в столбик,а там первую строку выводит нормально,а остальные как по пало

[Warning] passing arg 1 of `strstr' from incompatible pointer type и выдает ошибку,как её исправить?

Последний раз редактировалось Stilet; 10.06.2013 в 22:28.
Drago56 вне форума Ответить с цитированием
Старый 10.06.2013, 22:31   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а остальные как по пало
Играйся с параметрами в printf(). Иначе никак.
Цитата:
выдает ошибку
Warning это не ошибка.
Впрочем можешь писнуть strstr(s,(char* )&Patients[i].Adres)
Если не ошибаюсь, и если предупреждение глаз муляет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.06.2013, 19:14   #5
Drago56
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 91
По умолчанию

Цитата:
f2=fopen("BOSS.txt","r");

for(i=0;i<q;i++)
{
fseek(f2,sizeof(Pat2)*i,SEEK_SET);
fread(&Pat2,sizeof(Patients),1,f2);

if(strcmp(adress,Pat2.Adres)==0)
printf("\n%15s %7d %8d %18s %10d",Pat2.FIO,Pat2.Data,Pat2.Nambe r_Tel,Pat2.Adres,Pat2.Namber_Karta) ;
printf("\n%s",Pat2.Adres);
}
В условие в переменной Adress лежит введенный с терминала адрес для проверки.
Без условия выводит список нормально,но как только я вставляю условия,выдает ошибку чтения...Как можно здесь вывести списки людей проживающие по определенному адресу?
Drago56 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по файлу fanat2011 Общие вопросы C/C++ 0 14.04.2013 15:43
Поиск пути к файлу aank10 Общие вопросы C/C++ 5 21.02.2012 11:27
Си:Поиск по файлу. tutis Помощь студентам 0 10.05.2011 20:25
Поиск по текстовому файлу Max_Grinyuk Помощь студентам 10 13.11.2009 21:11
Поиск по файлу Sparky Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 13.10.2009 19:51