Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Не могу понять.  (Прочитано 5663 раз)
0 Пользователей и 1 Гость смотрят эту тему.
r-lynx
Гость
« : 15-03-2005 17:13 » 

Типа - код.

struct user
{
   int id;
   char nick[32];
   char ignore[1024];
};

void ignore(char* nick, int id)
{
   struct user tmpuser;
    FILE *f=fopen("user.dat","r+b");
   fseek(f,id*sizeof(user),SEEK_SET);
   fread(&tmpuser,1,sizeof(user),f);
   printf("'%i'\t'%s'\t'%s'\n", tmpuser.id, tmpuser.nick, tmpuser.ignore);

   int nlen=strlen(nick);
   int ilen=strlen(tmpuser.ignore);
   
   char* pdest = strstr(tmpuser.ignore, nick);
   if(pdest)
   {
      int result = pdest - tmpuser.ignore;
      if((tmpuser.ignore[(result+nlen)]==',' || tmpuser.ignore[(result+nlen)]==0) && tmpuser.ignore[(result-1)]==',')
      {
         for(int i=result;i<ilen-nlen+1;i++)
         {
            tmpuser.ignore[i-1]=tmpuser.ignore[i+nlen];
         }
         fseek(f,id*sizeof(user),SEEK_SET);
         fwrite(&tmpuser,1,sizeof(user),f);
      }
      else
      {
         strcat(tmpuser.ignore,",");
         strcat(tmpuser.ignore,nick);
         fseek(f,id*sizeof(user),SEEK_SET);
         fwrite(&tmpuser,1,sizeof(user),f);
      }

   }
   else
   {
      strcat(tmpuser.ignore,",");
      strcat(tmpuser.ignore,nick);
      fseek(f,id*sizeof(user),SEEK_SET);
      fwrite(&tmpuser,1,sizeof(user),f);
   }
   fclose(f);
}

мне надо просто найти в tmpuser.ignore сроку которую я передаю в функцию, если ее нет - то добавить, если есть - то удалить, разделители - запятая.
но, если допустим есть строка начальная
,bla,bkflg,bla222,dfgjdfg,bla2,sdfkjgk
то оно останавливается на bla222, считая что это bla2, как мне отследить что это не так? Что бы он нашел именно нужную мне строку?
« Последнее редактирование: 17-12-2007 16:55 от Алексей1153++ » Записан
r-lynx
Гость
« Ответ #1 : 16-03-2005 16:13 » 

в общем - я сам разобрался, переписал половину функции и заработало.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 17-03-2005 10:50 » new

r-lynx, ты в следующий раз оборачивай листинг тегами code - легче будет читать.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines