Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » сравнение двух массивов строк в Си

Ответить
Настройки темы
сравнение двух массивов строк в Си

Аватара для bool

Старожил


Сообщения: 229
Благодарности: 9

Профиль | Отправить PM | Цитировать


Изменения
Автор: bool
Дата: 01-05-2005
Описание: очипатка
вообщем нужна программа для подготовки и сохранения в файле информации о маршрутиах городского транспорта.И программа которая должна формировать список маршрутов которые отправляются от заданного начального пункта в заданный конечный пункт.
Программу подготовки я написал. Использовал структуру :
rasp{
char numb[10];
char vid[20];
char nach_punkt[15];
char kon_punkt[15];
char vremya[10];
}spisok[kol];
всё нормально сохраняется.
вот текст второй программы для поиска нужной информации:
Код: Выделить весь код
   # include <stdio.h>
   # include <stdlib.h>
   # define kol 20
   struct rasp {
   	char numb[10];
   	char vid[20];
   	char nach_punkt[15];
   	char kon_punkt[15];
   	char vremya[10];
   }spisok[kol];
   void init_list(void), load(void),list(void);
   int main(void)
   {
    char choice;
    char n[15];
    char k[15];
    int t;
    init_list();
    load();
    printf("Введите начальный пункт: ");
    gets(n);
    printf("Введите конечный пункт: ");
    gets(k);
    for(t=0;t<kol;++t)
    if(spisok[t].numb[0] && n[0] && k[0]) {
    if(spisok[t].nach_punkt==n && spisok[t].kon_punkt==k){
    printf("%s\n",spisok[t].numb);
    printf("%s\n",spisok[t].vid);
    printf("%s\n",spisok[t].nach_punkt);
    printf("%s\n",spisok[t].kon_punkt);
    printf("%s\n",spisok[t].vremya);}}
    getch();
   }
   void init_list(void)
   {
    register int t;
    for(t=0; t<kol; ++t) spisok[t].numb[0]='\0';
   }
   void load(void)
   {
    FILE *fp;
    register int i;
    if((fp=fopen("bd","rb"))==NULL){
    printf("Ошибка при открытии файла.\n");
    return;
    }
    init_list();
    for(i=0;i<kol;i++)
      if(fread(&spisok[i],sizeof(struct rasp),1,fp)!=1){
      if(feof(fp)) break;
      printf("Ошибка при чтении файла.\n");
      }
      fclose(fp);
   }
вообщем не правильно , результата нет никакого. Пробывал сравнивать первые символы в массивах, всё нормально получается :
if(spisok[t].nach_punkt[0]==n[0] && kon_punkt==k[0])
что то заклинило меня 8) не могу написать, чтобы строки сравнивал 8(

Отправлено: 15:55, 01-05-2005

 

Старожил


Сообщения: 401
Благодарности: 10

Профиль | Отправить PM | Цитировать


strcmpi пробовали?
или можно вложенный цикл - сравнивать кажный символ

-------
Успехов.


Отправлено: 17:13, 01-05-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


bool
В языках С и С++ сроки бывают нескольких видов. Классы мы рассматривать не будем, тем более, что у Вас используются как раз класссические zero-terminated строки. В этом случае строкой называется массив символов, оканчивающийся байтом 0x00, т.е. нулём. Строки в таком слачае сравнивают побайтовым сравнением символов такого массива. Строки равны, если попарно равны все символы массивов. Почитайте про strcmp и разновидности (strncmp). Кроме того. в Вашем случае стоит не забыть и приведение символов обеих строк к верхнему (нижнему) регистру, потому что с точки зрения strcmp символ 'A' не равен 'a'

Отправлено: 00:29, 02-05-2005 | #3


Аватара для bool

Старожил


Сообщения: 229
Благодарности: 9

Профиль | Отправить PM | Цитировать


aESThete hasherfrog
огромное спасибо 8) я только в стадии изучении Си, до этих функций ещё не дошёл 8)))) вообщем выручили , спасибо!!

Отправлено: 18:52, 02-05-2005 | #4

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Вообще-то это классическая задача для SQL-сервера. Может перераспределить усилия? Если это не курсовой, а, скажем, реальная вещь, может поделитесь результатом? А то по атласу как-то муторно искать...

Отправлено: 13:55, 04-05-2005 | #5


Старожил


Сообщения: 401
Благодарности: 10

Профиль | Отправить PM | Цитировать


to bool
Цитата:
вообщем нужна программа для подготовки и сохранения в файле информации о маршрутиах городского транспорта.И программа которая должна формировать список маршрутов которые отправляются от заданного начального пункта в заданный конечный пункт.
дополнительные условия, ограничения имеются?
поделитесь успехами, интересно, что в конце концов получится
pva
я так понял, судя по реализации на "голом" Cи, что это именно учебное задание

-------
Успехов.


Отправлено: 17:04, 04-05-2005 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » сравнение двух массивов строк в Си

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
HDD - Сравнение двух HDD и выбор лучшего (ST320413A vs ST310220A) J7BXA Накопители (SSD, HDD, USB Flash) 1 24-06-2009 09:17
Сравнение производительности двух ОС Dabaduch Хочу все знать 3 13-06-2009 19:27
Сравнение двух процов Rozmen Хочу все знать 4 03-08-2008 12:35
сравнение двух ноутбучных видеокарт X1700 и x2500 Sparkster Видеокарты 1 14-03-2008 13:07
Сравнение строк в PHP Dutchman Mihel Вебмастеру 8 06-07-2004 13:04




 
Переход