Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск значений переменных внутри файла, Очень нужна помощь! 
V
    Опции темы
ReGeDiT
  Дата 4.7.2006, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



суть программы:
внутри файла x.x есть блоки с переменными:
Код

[block 1]
string0=5000
string1=1000
string2=2000
string3=3000
string4=4000

[block 2]
string0=5000
string1=3000
string2=1000
string3=3000
string4=4000

[block 3]
string0=5000
string1=2000
string2=1000
string3=3000
string4=4000

в каждом блоке надо сравнить string1 и string2 smile если string1 > string2 сделать их равными и указать в каком блоке мы сделали изменения...
проблема возникает при определении значений string1 и string2 smile. Незнаю как это реализовать.

моя ужасная программа smile :

Код

#include <stdio.h>
#include <conio.h>
#include <string.h>

FILE *fp;

void main(void)
{
char st[7];
char stra[7];
stra[0]='s';
stra[1]='t';
stra[2]='r';
stra[3]='i';
stra[4]='n';
stra[5]='g';
stra[6]='1';
stra[7]='=';
char strb[7];
strb[0]='s';
strb[1]='t';
strb[2]='r';
strb[3]='i';
strb[4]='n';
strb[5]='g';
strb[6]='1';
strb[7]='=';
int vl1,vl2;
fp=fopen("x.x","r");
clrscr();
do {
    fscanf(fp,"%s",&st);
    printf("%s\n",st);
    if (st==stra) { scanf("%d",&vl1); printf("%d\n",vl1); };
    if (st==strb) { scanf("%d",&vl2); printf("%d\n",vl1); };
   }
while (!feof(fp));
getch();
fclose(fp);
}
 
PM MAIL WWW ICQ   Вверх
Fedor
Дата 4.7.2006, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



ReGeDiT, во-первых, инициализацию можешь сделать для всей строки целиком.
Во-вторых, строки сравниваются с помощью функции strcmp или strncmp (сравнивает первые n символов, и это тебе вполне может пригодится)
В-третьих, знак равенства по-моему не является разделителем, а значит, прочитается сразу вся строка.


В общем, делаешь так: читаешь всю строку, вырезаешь в ней все до равенства и сравниваешь со "string1". Если это действительно string1, вырезаешь все что после знака равенства и запоминаешь в переменную. (строки копируются функцией strcpy, или strncpy)
Таким же образом находишь string2.
Когда нашел string2, сравниваешь значения с помощью strcmp.


З.Ы. Может, есть красивее решение, но на несвежую голову придумал вот такое простое.  

Это сообщение отредактировал(а) Fedor - 4.7.2006, 23:17


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Fazil6
Дата 4.7.2006, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



если в винде, то используй API
Код

UINT GetPrivateProfileInt(
  LPCTSTR lpAppName,
  LPCTSTR lpKeyName,
  INT nDefault,
  LPCTSTR lpFileName
);


 
PM MAIL   Вверх
ReGeDiT
Дата 4.7.2006, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



Fedor
Oo хм... про идею с первыми символами это неплохо, но мне сказали что такая фишка не прокатит с переменной типа %s smile

Код

int kol = 8;
do {
    fscanf(fp,"%s",&st);
    printf("%s\n",st);
    if (strncmp(st,"string1=",kol)==0) {  /* а как тогда тут считать что мне надо? т.е. значения... */ };
    if (strncmp(st,"string2=",kol)==0) {  /* а как тогда тут считать что мне надо? т.е. значения... */ };
   }


пока что-то вроде этого... smile 
PM MAIL WWW ICQ   Вверх
ReGeDiT
Дата 4.7.2006, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



Fedor, ах да, strcmp ведь будет сравнивать только char значения, у меня задача перевести значения после "=" в %d (int) smile
и как вырезать всё ПОСЛЕ "string1="? smile 
PM MAIL WWW ICQ   Вверх
ptr
Дата 5.7.2006, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 1
Всего: 14



Ну можешь например так получить значения:
Код

atoi(strstr(string,"=")+1);
  

Это сообщение отредактировал(а) ptr - 5.7.2006, 07:03


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
Rockie
Дата 5.7.2006, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



ptr, точно.

ReGeDiT, вот полный пример
Код
#include<iostream>
#include<conio>

using namespace std;

int main()
{
  char * string = "string1=5000";
  int number = atoi(strstr(string,"=")+1);

  cout<<number;

  getch();
  return 0;
}



Цитата(ReGeDiT @  4.7.2006,  23:29 Найти цитируемый пост)
 но мне сказали что такая фишка не прокатит с переменной типа %s 

похоже рекомендуют использовать строки (string.h). кто может подсказать грамотное преобразование string в int? то есть доделать что-то вроде этого
Код
#include<iostream>
#include<conio>

using namespace std;

int main()
{
  string str = "string1=9000", str_num;
  int number = 0, lenght;

  lenght = str.length();   // длина всей строки

  // вырезаем число от знака '=' и до конца строки
  str_num = str.substr(str.find("=")+1,lenght);

  // пареобразование string str_num в int number

  cout<<number;

  getch();
  return 0;
}


компилятор BCBuilder 6

p.s.: вообще странно но я не нашел ничего вроде StrToInt из AnsiString  но для string. 


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Oleg_Ci
Дата 5.7.2006, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 3
Всего: 30



Сочинил програмку, Borland C++ Builder 6.
Код

#include <iostream>
#include <string>
#include <fstream>
#include <stdlib.h>
using namespace std;

int number(string buffer, int pt)
{
  int num=0;
  string s;

  for (;;pt++)
    if ( buffer[pt]>47 && buffer[pt]<58 )
      s+=buffer[pt];
    else break;

  num = atoi(s.c_str());
  return num;
}

int main()
{
  ifstream fin("txt.txt");
  if (!fin.is_open())
    return 1;

  string buffer;
  int pt=0, num1, num2;
  getline(fin, buffer, '\0');
  fin.close();

  while(1)
  {
    pt=buffer.find("block ",pt); if(pt==string::npos)break;
    pt += 6;
    cout<<"block "<<number(buffer, pt)<<endl;

    pt=buffer.find('=',pt); if(pt==string::npos)break;
    pt++;
    num1 = number(buffer, pt);
    pt=buffer.find('=',pt); if(pt==string::npos)break;
    pt++;
    num2 = number(buffer, pt);

    cout<<num1<<endl<<num2<<endl;

    if ( num1 > num2 )
    { /* что-то делаем */; }
  }
  cin.get();
  return 0;
}
  

Это сообщение отредактировал(а) Олег4 - 5.7.2006, 17:54
PM MAIL   Вверх
ReGeDiT
Дата 5.7.2006, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



спасибо огромное... вопрос почти решён )) признаю что я делаю программу под один из серверов игры WoW...
вот что я наделал:
Код

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

FILE *fp,*lg;

void main(void)
{
char st[7];
clrscr();
int vl0,vl1,vl2,dif;
char *name[99];
lg=fopen("log.log","w+");
fprintf(lg,"NM : Item Name\nBP : Buy Price\nSP : Sell Price\nDF : Difference\n\n\n",*name,vl1,vl2,dif);
fclose(lg);
fp=fopen("x.x","r");
do {
    /*************************************/
    fscanf(fp,"%s",&st);
    /*************************************/
    if (strncmp(st,"name=",5)==0)        {
    *name=(strstr(st,"=")+1);
    printf("name=%s\n",*name);             };
//    if (strncmp(st,"name=",5)==0) *name=st;
    /*************************************/
    if (strncmp(st,"[item ",6)==0)       {
    vl0=atoi(strstr(st," ")+1);
    printf("[item %d]\n",vl0);             };
    /*************************************/
    if (strncmp(st,"buyprice=",9)==0)    {
    vl1=atoi(strstr(st,"=")+1);
    printf("buyprice=%d\n",vl1);         };
    /*************************************/
    if (strncmp(st,"sellprice=",10)==0)  {
    vl2=atoi(strstr(st,"=")+1);
    printf("sellprice=%d\n",vl2);
    dif=vl2-vl1;
    if (vl1==vl2)
      { printf("SELLPRICE == BUYPRICE! ADDED TO LOG!\n");
    lg=fopen("log.log","a");
    fprintf(lg,"NM=%s BP=%d SP=%d DF=%d\n",*name,vl1,vl2,dif);
    fclose(lg);
      };
    if (vl2>vl1)
      { printf("SELLPRICE >> BUYPRICE! ADDED TO LOG!\n");
    lg=fopen("log.log","a");
    fprintf(lg,"NM=%s BP=%d SP=%d DF=%d\n",*name,vl1,vl2,dif);
    fclose(lg);
      };                                 };
    /*************************************/
    if (feof(fp)) { printf("We have reached end-of-file\n"); fclose(fp); };
   } while (!feof(fp));
}


файл x.x
Код


#include scripts/extra/items_LF.scp

[item 18]
name=Spirit Of The Wind
class=0
reqlevel=10
quality=1
buyprice=140
sellprice=35
bonding=1
classes=07FFF
model=15748
level=20
races=01FF
stackable=5
material=3
spell=16618 0 -1 0 4 120000

[item 19]
name=Agamaggan's Agility
class=0
reqlevel=10
quality=1
buyprice=140
sellprice=35
bonding=1
classes=07FFF
model=15748
level=20
races=01FF
stackable=5
material=3
spell=17013 0 -1 0 4 120000

[item 20]
name=Agamaggan's Strength
class=0
reqlevel=10
quality=1
buyprice=140
sellprice=35
bonding=1
classes=07FFF
model=15748
level=20
races=01FF
stackable=5
material=3
spell=16612 0 -1 0 4 120000

[item 1000]
name=ShitFuckI
class=0
reqlevel=10
quality=1
buyprice=1001
sellprice=2001
bonding=1
classes=07FFF
model=15748
level=20
races=01FF
stackable=5
material=3
spell=16618 0 -1 0 4 120000

[item 1001]
name=ShitFuckII
class=0
reqlevel=10
quality=1
buyprice=1333
sellprice=1999
bonding=1
classes=07FFF
model=15748
level=20
races=01FF
stackable=5
material=3
spell=16618 0 -1 0 4 120000

[item 1002]
name=ShitFuckIII
class=0
reqlevel=10
quality=1
buyprice=1000
sellprice=1000
bonding=1
classes=07FFF
model=15748
level=20
races=01FF
stackable=5
material=3
spell=16618 0 -1 0 4 120000


в последних трёх спецово даны неправильные значения... НО!!! почемуто в логе потом появляется что-то ужасное smile( вместо названия ужос, также немогу определить [item ID] smile вот 2 вопроса остались...

З.Ы. Начал пробовать перегонять всё под Visual C++ 7.0 Net >> удивился, но обычный импорт кода и программа работоспособна... теперь подскажите или дайте ссылку куданить на создание простейших видов интерфейса... или чтонить типа "Visual С++ для лашей" )) 
PM MAIL WWW ICQ   Вверх
ReGeDiT
Дата 5.7.2006, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



ыы и сорри, оверпостинг .... =) но кстати у меня даже после сканирования всего файла и дохождения до EOF (конца...) программа всеравно гоняет по файлу, и ни в какую не хочет закрываццо smile 
PM MAIL WWW ICQ   Вверх
ptr
Дата 6.7.2006, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 1
Всего: 14



Код

    if (feof(fp)) { printf("We have reached end-of-file\n"); fclose(fp); };
   } while (!feof(fp));

Ты закрываешь файл до того как проверяешь условие !feof(fp), поэтому оно и не выполняется. Делай fclose(fp) после цикла.

Цитата(Rockie @  5.7.2006,  19:39 Найти цитируемый пост)
похоже рекомендуют использовать строки (string.h). кто может подсказать грамотное преобразование string в int?
p.s.: вообще странно но я не нашел ничего вроде StrToInt из AnsiString  но для string.  

У std::string нет методов для преобразования. Можно сделать так:
Код

atoi(str_num.c_str());
 

Это сообщение отредактировал(а) ptr - 6.7.2006, 06:28


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
Rockie
Дата 6.7.2006, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



Цитата(ptr @  6.7.2006,  05:55 Найти цитируемый пост)
atoi(str_num.c_str());

спасибо, хорошее решение. 


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
ReGeDiT
Дата 6.7.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



ptr, спасибо ))
осталось нерешено только 2 вопроса:

почему в файле не пишется имя (*name)
Код

SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE >> BUYPRICE || IN = 0 NM = (null) BP = 29 SP = 58 DF = 29
SELLPRICE >> BUYPRICE || IN = 0 NM = (null) BP = 80 SP = 200 DF = 120
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE == BUYPRICE || IN = 0 NM = (null) BP = 1 SP = 1 DF = 0
SELLPRICE >> BUYPRICE || IN = 0 NM = (null) BP = 84490 SP = 96898 DF = 12408

и как сделать определение ID предмета
Код

    if (strncmp(st,"[item",5)==0)       {
    vl0 = atoi(strstr(st,"m")+3);
    printf("[item %d]\n",vl0);            };

smile 
PM MAIL WWW ICQ   Вверх
ReGeDiT
Дата 7.7.2006, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



smile неужели никто не знает? smile
и кстати, при выводе, выводится всё до пробела 
PM MAIL WWW ICQ   Вверх
ptr
Дата 7.7.2006, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 1
Всего: 14



Цитата(ReGeDiT @  6.7.2006,  19:40 Найти цитируемый пост)
почему в файле не пишется имя (*name)

Старая програма такого файла не генерит. Выложи новый вариант. Кстати а зачем в ней 
Код

char *name[99];
 По-моему можно было обойтись и одним указателем.

Цитата(ReGeDiT @  6.7.2006,  19:40 Найти цитируемый пост)
и как сделать определение ID предмета

Можешь, например, получать из файла так:
Код

fscanf(fp,"[item %d]\n",&id);

или из строки:
Код

sscanf(st,"[item %d]\n",&id);
    

Это сообщение отредактировал(а) ptr - 7.7.2006, 18:45


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
ReGeDiT
Дата 7.7.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



ptr, т.е. получается что fscanf(fp,"[item %d]\n",&id); будет искать строчку [item ]? Если да, то это очень облегчит задачу))

новый код:
Код

/* Основной модуль...
** Проверка items.scp на правильность
*/
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

FILE *fp, *lg;
int vl0=6, vl1=6, vl2=6, dif=6, i, nmb, id;
char st[99], nm[99], num[99];

void main(void)
{
lg = fopen("log.log","w+");
fprintf(lg,"IN : Item Number\nName : Item Name\nBP : Buy Price\nSP : Sell Price\nDF : Difference\n\n\n");
fclose(lg);
fp = fopen("items.scp","r");
do {
/**************************************************************************************************/
    fscanf(fp,"%s",&st);
/**************************************************************************************************/
    if (strncmp(st,"name=",5)==0)          {
    for (i=0;i<99;i++) { nm[i] = st[i]; };
    printf("%s\n",nm);                     };
/**************************************************************************************************/
    if (strncmp(st,"[item",5)==0)       {
    sscanf(st,"[item %d]\n",&id);
    printf("[item %d]-SS\n",id);
    fscanf(fp,"[item %d]\n",&id);
    printf("[item %d]-FS\n",id);
    /*vl0 = atoi(strstr(st,"m")+3);
    for (i=0;i<99;i++) { if (st[i]=='0') num[i]='0';
             if (st[i]=='1') num[i]='1';
             if (st[i]=='2') num[i]='2';
             if (st[i]=='3') num[i]='3';
             if (st[i]=='4') num[i]='4';
             if (st[i]=='5') num[i]='5';
             if (st[i]=='6') num[i]='6';
             if (st[i]=='7') num[i]='7';
             if (st[i]=='8') num[i]='8';
             if (st[i]=='9') num[i]='9';
               };
    nmb = atoi(num);
    printf("[item %d]\n",vl0);
    printf("[item %d]\n",nmb);*/
    printf("[item %d]\n",id);            };
/**************************************************************************************************/
    if (strncmp(st,"buyprice=",9)==0)   {
    vl1 = atoi(strstr(st,"=")+1);
    printf("buyprice=%d\n",vl1);        };
/**************************************************************************************************/
    if (strncmp(st,"sellprice=",10)==0) {
    vl2 = atoi(strstr(st,"=")+1);
    printf("sellprice=%d\n",vl2);
/**************************************************************************************************/
    dif = vl2-vl1;
/**************************************************************************************************/
    if (vl1==vl2) { printf("SELLPRICE == BUYPRICE! ADDED TO LOG!\n");
            lg = fopen("log.log","a");
            fprintf(lg,"SELLPRICE == BUYPRICE || ");
            fprintf(lg,"IN = %d %s BP = %d SP = %d DF = %d\n",vl0,nm,vl1,vl2,dif);
            fclose(lg);
          };
/**************************************************************************************************/
    if (vl2>vl1) { printf("SELLPRICE >> BUYPRICE! ADDED TO LOG!\n");
           lg = fopen("log.log","a");
           fprintf(lg,"SELLPRICE >> BUYPRICE || ");
           fprintf(lg,"IN = %d %s BP = %d SP = %d DF = %d\n",vl0,nm,vl1,vl2,dif);
           fclose(lg);
         };
                    };
/**************************************************************************************************/
    if (feof(fp)) { printf("All File Was Scanned [EOF]...\n");
            lg = fopen("log.log","a");
            fprintf(lg,"\n\nAll File Was Scanned [EOF]... --- %s -- %d --- %d --- %d ---",num,vl0,nmb,id);
            fclose(lg); };
   } while (!feof(fp));
fclose(fp);
}


всеравно не работает ID становится = 0 smile
З.Ы.: И как всё-таки сделать вывод слов дальше пробела? Например выводится "name=Sandstalker" вместо "name=Sandstalker Gauntlets"... 
PM MAIL WWW ICQ   Вверх
ptr
Дата 7.7.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 1
Всего: 14



Код

sscanf(st,"[item %d]\n",&id);

Здесь у тебя st="[item" (см. ниже). Поэтому id как был 0, так им и остался.

Код

fscanf(fp,"%s",&st);

В st заносится всё до пробела, поэтому и выводится так. Читай из файла всю строку полностью. 


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
ReGeDiT
Дата 7.7.2006, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



Глупый вопрос, но... как? smile)
Вообще извините за такие вопросы но я очень хочу освоить работу с файлами на 100% smile 
PM MAIL WWW ICQ   Вверх
Rockie
Дата 7.7.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



Цитата(ReGeDiT @  7.7.2006,  22:10 Найти цитируемый пост)
Глупый вопрос, но... как? )

считать всю строку?
Код
#include<iostream>
#include<conio>

using namespace std;

int main()
{ char buff[81];

  gets(buff);
  printf("%s\n",buff);

  // а по мне уж лучш C++
  string str;
  getline(cin,str);
  cout<<str;

  getch();
  return 0;
}


компилятор BCBuilder 6.0 


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
ReGeDiT
Дата 7.7.2006, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



а если на Visual C++ 7.0... smile 
PM MAIL WWW ICQ   Вверх
Rockie
Дата 7.7.2006, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



проморгал что читать из файла.
Цитата(ReGeDiT @  7.7.2006,  23:20 Найти цитируемый пост)
а если на Visual C++ 7.0...  

на 2005.
Код
// solution-for_vc.cpp : main project file.
#include "stdafx.h"
#include<iostream>
#include<string>
#include<fstream>

using namespace std;

int main()
{  FILE *stream;
   char buff[81];
   
    if( (fopen_s(&stream, "1.txt", "r" ))!=0 )
      printf( "The file '1.txt' was not opened\n" );

   fgets(buff, sizeof(buff), stream);    // read a string from the file
   printf("%s", buff);

   fclose(stream);

   // а по мне уж лучше С++
   ifstream stream2("1.txt");
   string str;
   getline(stream2,str);
   cout<<'\n'<<str;

   stream2.close();

   cin.get();
   return 0;
}

 


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
ptr
Дата 8.7.2006, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 1
Всего: 14



Цитата(ReGeDiT @  8.7.2006,  02:10 Найти цитируемый пост)
Глупый вопрос, но... как? smile)

Если для C и под Linux, то там есть функция getline(). Под windows я подобной функции не припомню. Можешь, например, использовать функцию для чтения строк (память потом надо чистить):
Код

#define BUF_SIZE 256

char* getline(FILE* stream)
{
    int cur_size=0;
    int i=0;
    char* buf=(char*)malloc(sizeof(char)*BUF_SIZE);
    if(NULL==buf)
    {
    fprintf(stderr,"Couldn't allocate memory!");
    return NULL;
    }
    while(fgets(&buf[cur_size],BUF_SIZE,stream))
    {
    if('\n'==buf[strlen(buf)-1])
    {
        buf[strlen(buf)-1]='\0';
        return buf;
    }
    cur_size+=BUF_SIZE-1;
    buf=(char*)realloc(buf,cur_size+BUF_SIZE);
    if(NULL==buf)
    {
        fprintf(stderr,"Couldn't allocate memory!");
        return NULL;
    }
    }
    return buf;
}

      

Это сообщение отредактировал(а) ptr - 9.7.2006, 07:54


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
ReGeDiT
Дата 9.7.2006, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



ptr спасибо... теперь правда у меня слова обрезаются некоторые )) и выводится та часть слова которая после пробела ))
не мог бы ты уже на моём коде показать как это всё должно работать, чтобы я наконец понял в чём проблема... все комменты есть )
Код

/*************************************** 
** Основной модуль...                 **
** Проверка items.scp на правильность **
***************************************/

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <istream>
#define BUF_SIZE 256

char *getline(FILE* stream) // Proc by ptr
{   int cur_size=0;
    int i=0;
    char* buf=(char*)malloc(sizeof(char)*BUF_SIZE);
    if(NULL==buf)
    {
    fprintf(stderr,"Couldn't allocate memory!");
    return NULL;
    }
    while(fgets(&buf[cur_size],BUF_SIZE,stream))
    {
    if('\n'==buf[strlen(buf)-1])
    {
        buf[strlen(buf)-1]='\0';
        return buf;
    }
    cur_size+=BUF_SIZE-1;
    buf=(char*)realloc(buf,cur_size+BUF_SIZE);
    if(NULL==buf)
    {
        fprintf(stderr,"Couldn't allocate memory!");
        return NULL;
    }
    }
    return buf;
}

FILE *fp, *lg;
int vl0=6, vl1=6, vl2=6, dif=6, i, nmb, id;
char st[99], nm[99], num[99];
char *dd;

void main(void)
{
lg = fopen("log.log","w+");
fprintf(lg,"IN : Item Number\nName : Item Name\nBP : Buy Price\nSP : Sell Price\nDF : Difference\n\n\n");
fclose(lg);
fp = fopen("items.scp","r");
do {
/**************************************************************************************************/
    fscanf(fp,"%s",&st);
    dd = getline(fp);
    /*sscanf(st,"[item %d]\n",&id);
    printf("[item %d]-SS\n",id);
    fscanf(fp,"[item %d]\n",&id);
    printf("[item %d]-FS\n",id);/*
/**************************************************************************************************/
/*    if (strncmp(st,"name=",5)==0)          {
    for (i=0;i<99;i++) { nm[i] = st[i]; };
    printf("%s\n",nm);                     };*/
    if (strncmp(st,"name=",5)==0)          {
    for (i=0;i<=99;i++) { nm[i] = dd[i]; }; // по другому ну никак не придумаю :(
    printf("%s\n",nm);                     };
/**************************************************************************************************/
    if (strncmp(dd,"[",1)==0)       { // условие не выполняется :(
    //sscanf(st,"[item %d]\n",&id);
    //printf("[item %d]-SS\n",id);
    //fscanf(fp,"[item %d]\n",&id);
    //printf("[item %d]-FS\n",id);
    vl0 = 345; // Тест на работает ли вообще... и как выяснилось условие не выполняется
    vl0 = atoi(strstr(dd,"m")+3);
/*    for (i=0;i<99;i++) { if (st[i]=='0') num[i]='0';
             if (st[i]=='1') num[i]='1';
             if (st[i]=='2') num[i]='2';
             if (st[i]=='3') num[i]='3';
             if (st[i]=='4') num[i]='4';
             if (st[i]=='5') num[i]='5';
             if (st[i]=='6') num[i]='6';
             if (st[i]=='7') num[i]='7';
             if (st[i]=='8') num[i]='8';
             if (st[i]=='9') num[i]='9';
               };
    nmb = atoi(num);
  */  printf("[item %d]\n",vl0);
    /*printf("[item %d]\n",nmb);
    printf("[item %d]-ID\n",id);*/            };
/**************************************************************************************************/
    if (strncmp(st,"buyprice=",9)==0)   {  // тут всё работает 100%
    vl1 = atoi(strstr(st,"=")+1);          // тут всё работает 100%
    printf("buyprice=%d\n",vl1);        }; // тут всё работает 100%
/**************************************************************************************************/
    if (strncmp(st,"item",4)==0)   {  // сделал проверку ещё раз, на всякий случай, но всёравно не работает
    vl0 = atoi(strstr(st," ")+1);     // 0%
    printf("item=%d\n",vl0);       }; // 0%
/**************************************************************************************************/
    if (strncmp(st,"sellprice=",10)==0) { // Работает 100%
    vl2 = atoi(strstr(st,"=")+1);
    printf("sellprice=%d\n",vl2);
    dif = vl2-vl1;
    if ((vl1==vl2)&&(vl1!=1)&&(vl2!=1)) { printf("SELLPRICE == BUYPRICE! ADDED TO LOG!\n");
                                          lg = fopen("log.log","a");
                                          fprintf(lg,"SELLPRICE == BUYPRICE || ");
                                          fprintf(lg,"IN = %d-%d-%d %s BP = %d SP = %d DF = %d\n",vl0,nmb,id,nm,vl1,vl2,dif);
                                          fclose(lg);
                                        };
    if (vl2>vl1) { printf("SELLPRICE >> BUYPRICE! ADDED TO LOG!\n");
                   lg = fopen("log.log","a");
                   fprintf(lg,"SELLPRICE >> BUYPRICE || ");
                   fprintf(lg,"IN = %d-%d-%d %s BP = %d SP = %d DF = %d\n",vl0,nmb,id,nm,vl1,vl2,dif);
                   fclose(lg);
                 };
                                        };
/**************************************************************************************************/
    if (feof(fp)) { printf("All File Was Scanned [EOF]...\n");
            lg = fopen("log.log","a");
            fprintf(lg,"\n\nAll File Was Scanned [EOF]... %d",vl0);
            fclose(lg); };
   } while (!feof(fp));
fclose(fp);
}

// ThX to ptr, Rockie, Олег4, Fedor, Fazil6 and all who i forgot ^^
 
PM MAIL WWW ICQ   Вверх
Rockie
Дата 10.7.2006, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



Цитата(ReGeDiT @  9.7.2006,  21:38 Найти цитируемый пост)
 все комменты есть )

Цитата(ReGeDiT @  9.7.2006,  21:38 Найти цитируемый пост)
 if (strncmp(st,"buyprice=",9)==0)   {  // тут всё работает 100%    
    vl1 = atoi(strstr(st,"=")+1);          // тут всё работает 100%    
    printf("buyprice=%d\n",vl1);        }; // тут всё работает 100%

Цитата(ReGeDiT @  9.7.2006,  21:38 Найти цитируемый пост)
l0 = atoi(strstr(st," ")+1);     // 0%

=)
ReGeDiT, дай содержимое файла log.log или еще какого там и напиши точно что эта программа делает. 


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
ReGeDiT
Дата 10.7.2006, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



=)
log.log :
Код


~items.scp~

IN : Item Number
Name : Item Name
BP : Buy Price
SP : Sell Price
DF : Difference
VR : Variable


SELLPRICE >> BUYPRICE || IN = 0  Shoes BP = 29 SP = 58 DF = 29
SELLPRICE >> BUYPRICE || IN = 0  Linen Bandage BP = 80 SP = 200 DF = 120
UNKNOWN      VARIABLE || IN = 0  Sash VR = variaaion=1022
UNKNOWN      VARIABLE || IN = 0  Chestpiece VR = maaerial=8
UNKNOWN      VARIABLE || IN = 0  Chicken VR = lot=10620
UNKNOWN      VARIABLE || IN = 0  VR = bayprice=87634
UNKNOWN      VARIABLE || IN = 0  Helm VR = variarion=1811
UNKNOWN      VARIABLE || IN = 0  Commander's Chain Pauldrons VR = bayprice=64573
SELLPRICE >> BUYPRICE || IN = 0  Gauntlets BP = 84490 SP = 96898 DF = 12408


All File Was Scanned [EOF]...


новый код :
Код

/***************************
** Модуль проверки файлов **
***************************/

#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define BUF_SIZE 256

char* getline(FILE* stream)
{
    int cur_size=0;
    char* buf=(char*)malloc(sizeof(char)*BUF_SIZE);
    if (NULL==buf) { fprintf(stderr,"Couldn't allocate memory!");
             return NULL;
           }
    while(fgets(&buf[cur_size],BUF_SIZE,stream))
      { if ('\n'==buf[strlen(buf)-1])
      {
       buf[strlen(buf)-1]='\0';
       return buf;
      }
    cur_size+=BUF_SIZE-1;
    buf=(char*)realloc(buf,cur_size+BUF_SIZE);
    if (NULL==buf)
      {
       fprintf(stderr,"Couldn't allocate memory!");
       return NULL;
      }
      }
    return buf;
}

/***************************************
** Проверка items.scp на правильность **
***************************************/

FILE *fp, *lg;
int vl0=0, vl1=0, vl2=0, dif, i, nmb, id;
char st[99], *nm;

void main(void)
{
lg = fopen("log.log","wt");
fprintf(lg,"\n~items.scp~\n\nIN : Item Number\nName : Item Name\nBP : Buy Price\nSP : Sell Price\nDF : Difference\nVR : Variable\n\n\n");
fclose(lg);
fp = fopen("items.scp","rt");
do {
/**************************************************************************************************/
    fscanf(fp,"%s",&st);
/**************************************************************************************************/
    if (strncmp(st,"name=",5)==0) {  // Работает на 50% - Только половина имени
    nm = getline(fp);                // Работает на 50% - Только половина имени
    printf("%s\n",nm);            }; // Работает на 50% - Только половина имени
/**************************************************************************************************/
    sscanf(getline(fp),"[item %d]\n",&vl0); // 0%
/**************************************************************************************************/
    if (strncmp(st,"buyprice=",9)==0)   {  // тут всё работает 100%
    vl1 = atoi(strstr(st,"=")+1);          // тут всё работает 100%
    printf("buyprice=%d\n",vl1);        }; // тут всё работает 100%
/**************************************************************************************************/
    if (strncmp(st,"sellprice=",10)==0) { // Работает 100%
    vl2 = atoi(strstr(st,"=")+1);
    printf("sellprice=%d\n",vl2);
    dif = vl2-vl1;
    if ((vl1==vl2)&&(vl1!=1)&&(vl2!=1)) { printf("SELLPRICE == BUYPRICE! ADDED TO LOG!\n");
                                          lg = fopen("log.log","at");
                                          fprintf(lg,"SELLPRICE == BUYPRICE || IN = %d %s BP = %d SP = %d DF = %d\n",vl0,nm,vl1,vl2,dif);
                                          fclose(lg);
                                        };
    if (vl2>vl1) { printf("SELLPRICE >> BUYPRICE! ADDED TO LOG!\n");
               lg = fopen("log.log","at");
               fprintf(lg,"SELLPRICE >> BUYPRICE || IN = %d %s BP = %d SP = %d DF = %d\n",vl0,nm,vl1,vl2,dif);
               fclose(lg);
             };
                                };
/**************************************************************************************************/
    if ((strncmp(st,"bonding=",8)!=0)&& // Работает 100%
        (strncmp(st,"buyprice=",9)!=0)&&
        (strncmp(st,"class=",6)!=0)&&
        (strncmp(st,"classes=",8)!=0)&&
        (strncmp(st,"description=",12)!=0)&&
        (strncmp(st,"language=",9)!=0)&&
        (strncmp(st,"level=",6)!=0)&&
        (strncmp(st,"material=",9)!=0)&&
        (strncmp(st,"maxcount=",9)!=0)&&
        (strncmp(st,"model=",6)!=0)&&
        (strncmp(st,"name=",5)!=0)&&
        (strncmp(st,"pagetext=",9)!=0)&&
        (strncmp(st,"quality=",8)!=0)&&
        (strncmp(st,"races=",6)!=0)&&
        (strncmp(st,"reqlevel=",9)!=0)&&
        (strncmp(st,"sellprice=",10)!=0)&&
        (strncmp(st,"//",2)!=0)&&
        (strncmp(st,"#include",8)!=0)&&
        (strncmp(st,"[item",5)!=0)&&
        (strncmp(st,"damage=",7)!=0)&&
        (strncmp(st,"delay=",6)!=0)&&
        (strncmp(st,"durability=",11)!=0)&&
        (strncmp(st,"inventorytype=",14)!=0)&&
        (strncmp(st,"sheath=",7)!=0)&&
        (strncmp(st,"resistance1=",12)!=0)&&
        (strncmp(st,"resistance2=",12)!=0)&&
        (strncmp(st,"resistance3=",12)!=0)&&
        (strncmp(st,"resistance4=",12)!=0)&&
        (strncmp(st,"resistance5=",12)!=0)&&
        (strncmp(st,"resistance6=",12)!=0)&&
        (strncmp(st,"resistance7=",12)!=0)&&
        (strncmp(st,"resistances=",12)!=0)&&                    // ???
        (strncmp(st,"bonus=",6)!=0)&&
        (strncmp(st,"questid=",8)!=0)&&
        (strncmp(st,"block=",6)!=0)&&
        (strncmp(st,"part=",5)!=0)&&
        (strncmp(st,"flags=",6)!=0)&&
        (strncmp(st,"extra=",6)!=0)&&                           // ???
        (strncmp(st,"variation=",10)!=0)&&
        (strncmp(st,"containerslots=",15)!=0)&&
        (strncmp(st,"subclass=",9)!=0)&&
        (strncmp(st,"spell=",6)!=0)&&
        (strncmp(st,"skill=",6)!=0)&&
        (strncmp(st,"skillrank=",10)!=0)&&
        (strncmp(st,"questscript=",12)!=0)&&
        (strncmp(st,"starts_quests=",14)!=0)&&                  // 1 ?
        (strncmp(st,"startquest=",11)!=0)&&                     // 1 ?
        (strncmp(st,"ammotype=",9)!=0)&&                        // ???
        (strncmp(st,"oldclass=",9)!=0)&&                        // ???
        (strncmp(st,"pagematerial=",13)!=0)&&                   // ???
        (strncmp(st,"loot=",5)!=0)&&
        (strncmp(st,"lockid=",7)!=0)&&                          // ???
        (strncmp(st,"finishes_quests=",16)!=0)&&
        (strncmp(st,"set=",4)!=0)&&
        (strncmp(st,"questid2=",9)!=0)&&                        // ???
        (strncmp(st,"spellreq=",9)!=0)&&
        (strncmp(st,"pvprankreq=",11)!=0)&&
        (strncmp(st,"stackable=",10)!=0)) { lg = fopen("log.log","at");
                                            printf("UNKNOWN      VARIABLE! ADDED TO LOG!\n");
                                            fprintf(lg,"UNKNOWN      VARIABLE || IN = %d %s VR = %s\n",vl0,nm,st);
                                            fclose(lg);
                                          };
/**************************************************************************************************/
    if (feof(fp)) { printf("All File Was Scanned [EOF]...\n");
                    lg = fopen("log.log","at");
                    fprintf(lg,"\n\nAll File Was Scanned [EOF]...");
                    fclose(lg);
                  };
   }
while (!feof(fp));
fclose(fp);
}

/*********************************************************************
** ThX to ptr, Rockie, Олег4, Fedor, Fazil6 and all who i forgot ^^ **
*********************************************************************/


проблема в :

Код

SELLPRICE >> BUYPRICE || IN = 0  Gauntlets BP = 84490 SP = 96898 DF = 12408


должно быть как
Код

SELLPRICE >> BUYPRICE || IN = 0  Sandstalker Gauntlets BP = 84490 SP = 96898 DF = 12408

smile

и IN = 0 никак не определит [item ID] ... всеравно 0... smile 

т.е. в идеале всё должно быть как

Код

SELLPRICE >> BUYPRICE || IN = 20477 Sandstalker Gauntlets BP = 84490 SP = 96898 DF = 12408


то что в items.scp >>
Код

[item 20477]
bonus=7 9
bonding=2
buyprice=84490
class=4
classes=07FF
durability=40
inventorytype=10
level=62
material=5
model=32874
name=Sandstalker Gauntlets
quality=3
races=0FF
reqlevel=57
resistance1=308
resistance4=20
sellprice=96898
stackable=1
subclass=3


ух много я напесал ^^  

Это сообщение отредактировал(а) ReGeDiT - 10.7.2006, 13:32
PM MAIL WWW ICQ   Вверх
ptr
Дата 10.7.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 1
Всего: 14



Я немного поправил твою программу (исправил ошибки, да немного упростил). Кривовато конечно получилось, но для примера сойдёт. Теперь, вроде, всё считывается и выводится нормально.
Код

/*************************************** 
** Îñíîâíîé ìîäóëü...                 **
** Ïðîâåðêà items.scp íà ïðàâèëüíîñòü **
***************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

#define BUF_SIZE 256
#define NAME_LEN 99

char *getline(FILE* stream) // Proc by ptr
{   
    int cur_size=0;
    int i=0;
    char* buf=(char*)malloc(sizeof(char)*BUF_SIZE);
    if(NULL==buf)
    {
        return NULL;
    }
    while(fgets(&buf[cur_size],BUF_SIZE,stream))
    {
        if('\n'==buf[strlen(buf)-1])
        {
            buf[strlen(buf)-1]='\0';
            return buf;
        }
        cur_size+=BUF_SIZE-1;
        buf=(char*)realloc(buf,cur_size+BUF_SIZE);
        if(NULL==buf)
        {
            return NULL;
        }
    }
    return buf;
}

void printToLog(FILE* log, int buyPrice, int sellPrice, int id, char *name)
{
    //if(NULL==name){}
    int dif = sellPrice - buyPrice;
    if(0==dif)
    {
        fprintf(log,"SELLPRICE == BUYPRICE || ");
    }
    else
    {
        fprintf(log,"SELLPRICE >> BUYPRICE || ");
    }
    fprintf(log,"IN = %d %s BP = %d SP = %d DF = %d\n", id, name, buyPrice, sellPrice, dif);

    printf("Name: %s\n", name);
    printf("ID: %d\n",id);
    printf("buyPrice: %d\n",buyPrice);
    printf("sellPrice: %d\n\n",sellPrice);
}


int main(void)
{
    extern int errno;
    FILE *input = NULL, *log = NULL;
    int buyPrice=0, sellPrice=0, id=0;
    char name[NAME_LEN+1];
    void *ptr = NULL;//èñïîëüçóåòñÿ äëÿ ïðîñòîòû çàïèñè
    char *buf = NULL;//áóôåð äëÿ ÷òåíèÿ
    char allValues = 0;//åñëè ìû ñ÷èòàëè âñå äàííûå(=1), òî ïèøåì èõ â ëîã.
    
    log = fopen("log.log","w+");
    input = fopen("items.scp","r");

    if(NULL==log || NULL==input)
    {
        fprintf(stderr,"Couldn't open file - %s.", strerror(errno));
        exit(EXIT_FAILURE);
    }

    fprintf(log,"IN : Item Number\nName : Item Name\nBP : Buy Price\nSP : Sell Price\nDF : Difference\n\n\n");
    fclose(log);
    log = fopen("log.log", "a");

    buf=getline(input);// ñ÷èòûâàíèå ïåðâîé ñòðîêè #include scripts/extra/items_LF.scp

    if(NULL==buf)//ïðîâåðêà íà îøèáêè
    {
        fclose(log);
        fclose(input);
        exit(EXIT_FAILURE);
    }

    while(!feof(input))
    {
        if(1==allValues)//åñëè =1, òî ïèøåì â ëîã (òàê ëó÷øå íå äåëàòü)
        {
            printToLog(log, buyPrice, sellPrice, id, name);
            allValues = 0;
        }

        if(NULL==(buf=getline(input)))//ñ÷èòûâàåì èç ôàéëà
        {
            fclose(log);
            fclose(input);
            exit(EXIT_FAILURE);
        }

        if(0==strncmp("[item",buf,strlen("[item")))
        {
            sscanf(buf,"[item %d]",&id);
            //continue;
        }

        if(0==strncmp("name",buf, strlen("name")))
        {
            ptr = strstr(buf,"=")+1;
            strncpy(name, ptr, NAME_LEN);//íåêîððåòíî, íî åñëè äëèíà èìåíè <99 ñèìâîëîâ :), òî ñîéä¸ò
            //continue;
        }

        if(0==strncmp("buyprice",buf,strlen("buyprice")))
        {
            ptr = strstr(buf,"=")+1;
            buyPrice = atoi(ptr);
            //continue;
        }

        if(0==strncmp("sellprice",buf,strlen("sellprice")))
        {
            ptr = strstr(buf,"=")+1;
            sellPrice = atoi(ptr);
            allValues=1;
            //continue;
        }
        free(buf);//íå çàáûâàé ÷èñòèòü ïàìÿòü
    }

    printf("All File Was Scanned [EOF]...\n");
    fprintf(log,"\n\nAll File Was Scanned [EOF]... ");

    //óõîäÿ ãàñèì ñâåò
    fclose(input);
    fclose(log);

    system("PAUSE");
    return 0;
}
 


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
ReGeDiT
Дата 10.7.2006, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



ptr, все комменты на арабском smile( ничо не понять ^^
З.Ы. а не мог ли бы ты исправить конкретно в моей программе (пост выше)... а то мне очень долго разбирацо в твоей ибо код написан в очень сложной манере... но спасибо всеравно ))

Добавлено @ 16:33 
если это ");// ñ÷èòûâàíèå ïåðâîé ñòðîêè #include scripts/extra/items_LF.scp" переводится как "что такое #include scripts/extra/items_LF.scp" то это значит, что проверяемый файл также должен включать в себя другой файл... т.е. неплохо было-бы его подгрузить ))) но как это сделать я пока не задумывался 
PM MAIL WWW ICQ   Вверх
ReGeDiT
Дата 10.7.2006, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



и почемуто у меня если в любое время делать 

переменная = getline(fp);

то программа выводит в логе полную чушь, прямо мистика smile... там что-то про очистку памяти было? )) 
PM MAIL WWW ICQ   Вверх
ReGeDiT
Дата 10.7.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



ыыы сорри снова... ptr а зачем ты в своём коде сделал ошибку? спецово? =) защита от дурака? smile) так или иначе, в логе пишется чушь )) 
PM MAIL WWW ICQ   Вверх
ptr
Дата 11.7.2006, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 1
Всего: 14



Цитата(ReGeDiT @  10.7.2006,  21:41 Найти цитируемый пост)
ыыы сорри снова... ptr а зачем ты в своём коде сделал ошибку? спецово? =) защита от дурака? smile) так или иначе, в логе пишется чушь ))  

Что за ошибка? У меня всё нормально работает.


Цитата(ReGeDiT @  10.7.2006,  20:42 Найти цитируемый пост)
и почемуто у меня если в любое время делать 

переменная = getline(fp);

то программа выводит в логе полную чушь, прямо мистика smile... там что-то про очистку памяти было? ))  

getline() считывает из файла всю строку полностью, при этом выделяет память под неё (читай всё getline, fscanf здесь вообще не нужен). После использования строки делай free().

Что за чушь то?

Цитата(ReGeDiT @  10.7.2006,  20:21 Найти цитируемый пост)
если это ");// ñ÷èòûâàíèå ïåðâîé ñòðîêè #include scripts/extra/items_LF.scp" переводится как "что такое #include scripts/extra/items_LF.scp" то это значит, что проверяемый файл также должен включать в себя другой файл... 

Ну что-то же я с этой строкой делать то должен был.

Цитата(ReGeDiT @  10.7.2006,  20:21 Найти цитируемый пост)
ptr, все комменты на арабском smile( ничо не понять ^^

Ты это о чём?

Цитата(ReGeDiT @  10.7.2006,  20:21 Найти цитируемый пост)
З.Ы. а не мог ли бы ты исправить конкретно в моей программе (пост выше)... а то мне очень долго разбирацо в твоей ибо код написан в очень сложной манере... но спасибо всеравно ))

Ну не знаю что ты сложного нашёл.
Вот твой код:
Код

char* buf;
...
do {
buf=getline(fp);//здесь не нужен fscanf
    if (strncmp(buf,"name=",5)==0) {
    strncpy(nm, strstr(buf,"=")+1, 99);
                            }
....
    sscanf(buf,"[item %d]",&vl0);
    free(buf);
}
while()
  

Это сообщение отредактировал(а) ptr - 11.7.2006, 09:07


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
ReGeDiT
Дата 11.7.2006, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



ptr у меня все твои комментарии на непонятной кодировке типа "Аоеоаоеоаеоаоееаоеа" (не KOI8-R) smile в прошлой программе

ошибка вот эта
Код

    void *ptr = NULL;//èñïîëüçóåòñÿ äëÿ ïðîñòîòû çàïèñè
    char *buf = NULL;//áóôåð äëÿ ÷òåíèÿ

smile а надо 
Код

    char *ptr = NULL;//èñïîëüçóåòñÿ äëÿ ïðîñòîòû çàïèñè
    char *buf = NULL;//áóôåð äëÿ ÷òåíèÿ


также я сделал всё как ты сказал, всё компилируется... но в винде потом выскакивает критическая ошибка smile
Код

/***************************
** Модуль проверки файлов **
***************************/

#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

#define BUF_SIZE 256
#define NAME_LEN 99

char* getline(FILE* stream)
{
    int cur_size=0;
    char* buf=(char*)malloc(sizeof(char)*BUF_SIZE);
    if (NULL==buf) { fprintf(stderr,"Couldn't allocate memory!");
             return NULL;
           }
    while(fgets(&buf[cur_size],BUF_SIZE,stream))
      { if ('\n'==buf[strlen(buf)-1])
      {
       buf[strlen(buf)-1]='\0';
       return buf;
      }
    cur_size+=BUF_SIZE-1;
    buf=(char*)realloc(buf,cur_size+BUF_SIZE);
    if (NULL==buf)
      {
       fprintf(stderr,"Couldn't allocate memory!");
       return NULL;
      }
      }
    return buf;
}

/***************************************
** Проверка items.scp на правильность **
***************************************/

FILE *fp, *lg;
int vl0 = 0, vl1 = 0, vl2 = 0, dif = 0, i = 0, nmb = 0, id = 0;
char st[99], *nm;
char* buf = NULL;

void main(void)
{
lg = fopen("log.log","wt");
fprintf(lg,"WoWCHK v0.2 Auto-Generated LOG-File\n\n~items.scp~\n\nID : Item Number\nName : Item Name\nBP : Buy Price\nSP : Sell Price\nDF : Difference\nVR : Variable\n\n");
fclose(lg);
fp = fopen("items.scp","rt");
do {
/**************************************************************************************************/
    buf = getline(fp);
/**************************************************************************************************/
    if (strncmp(buf,"[item",5)==0) { sscanf(buf,"[item %d]",&vl0); };
    printf("[item %d]\n",vl0);
/**************************************************************************************************/
    if (strncmp(buf,"name=",5)==0) { strncpy(nm,strstr(buf,"=")+1,99); };
    printf("name=%s]\n",nm);
/**************************************************************************************************/
    if (strncmp(buf,"buyprice=",9)==0)   {  // тут всё работает 100%
    vl1 = atoi(strstr(buf,"=")+1);          // тут всё работает 100%
    printf("buyprice=%d\n",vl1);        }; // тут всё работает 100%
/**************************************************************************************************/
    if (strncmp(buf,"sellprice=",10)==0) { // Работает 100%
    vl2 = atoi(strstr(buf,"=")+1);
    printf("sellprice=%d\n",vl2);
    dif = vl2-vl1;
    if ((vl1==vl2)&&(vl1!=1)&&(vl2!=1)) { printf("SELLPRICE == BUYPRICE! ADDED TO LOG!\n");
                                          lg = fopen("log.log","at");
                                          fprintf(lg,"SELLPRICE == BUYPRICE || IN = %d %s BP = %d SP = %d DF = %d\n",vl0,nm,vl1,vl2,dif);
                                          fclose(lg);
                                        };
    if (vl2>vl1) { printf("SELLPRICE >> BUYPRICE! ADDED TO LOG!\n");
               lg = fopen("log.log","at");
               fprintf(lg,"SELLPRICE >> BUYPRICE || IN = %d %s BP = %d SP = %d DF = %d\n",vl0,nm,vl1,vl2,dif);
               fclose(lg);
             };
                                };
/**************************************************************************************************/
    if ((strncmp(buf,"bonding=",8)!=0)&& // Работает 100%
        (strncmp(buf,"buyprice=",9)!=0)&&
        (strncmp(buf,"class=",6)!=0)&&
        (strncmp(buf,"classes=",8)!=0)&&
        (strncmp(buf,"description=",12)!=0)&&
        (strncmp(buf,"language=",9)!=0)&&
        (strncmp(buf,"level=",6)!=0)&&
        (strncmp(buf,"material=",9)!=0)&&
        (strncmp(buf,"maxcount=",9)!=0)&&
        (strncmp(buf,"model=",6)!=0)&&
        (strncmp(buf,"name=",5)!=0)&&
        (strncmp(buf,"pagetext=",9)!=0)&&
        (strncmp(buf,"quality=",8)!=0)&&
        (strncmp(buf,"races=",6)!=0)&&
        (strncmp(buf,"reqlevel=",9)!=0)&&
        (strncmp(buf,"sellprice=",10)!=0)&&
        (strncmp(buf,"//",2)!=0)&&
        (strncmp(buf,"#include",8)!=0)&&
        (strncmp(buf,"[item",5)!=0)&&
        (strncmp(buf,"damage=",7)!=0)&&
        (strncmp(buf,"delay=",6)!=0)&&
        (strncmp(buf,"durability=",11)!=0)&&
        (strncmp(buf,"inventorytype=",14)!=0)&&
        (strncmp(buf,"sheath=",7)!=0)&&
        (strncmp(buf,"resistance1=",12)!=0)&&
        (strncmp(buf,"resistance2=",12)!=0)&&
        (strncmp(buf,"resistance3=",12)!=0)&&
        (strncmp(buf,"resistance4=",12)!=0)&&
        (strncmp(buf,"resistance5=",12)!=0)&&
        (strncmp(buf,"resistance6=",12)!=0)&&
        (strncmp(buf,"resistance7=",12)!=0)&&
        (strncmp(buf,"resistances=",12)!=0)&&                    // ???
        (strncmp(buf,"bonus=",6)!=0)&&
        (strncmp(buf,"questid=",8)!=0)&&
        (strncmp(buf,"block=",6)!=0)&&
        (strncmp(buf,"part=",5)!=0)&&
        (strncmp(buf,"flags=",6)!=0)&&
        (strncmp(buf,"extra=",6)!=0)&&                           // ???
        (strncmp(buf,"variation=",10)!=0)&&
        (strncmp(buf,"containerslots=",15)!=0)&&
        (strncmp(buf,"subclass=",9)!=0)&&
        (strncmp(buf,"spell=",6)!=0)&&
        (strncmp(buf,"skill=",6)!=0)&&
        (strncmp(buf,"skillrank=",10)!=0)&&
        (strncmp(buf,"questscript=",12)!=0)&&
        (strncmp(buf,"starts_quests=",14)!=0)&&                  // 1 ?
        (strncmp(buf,"startquest=",11)!=0)&&                     // 1 ?
        (strncmp(buf,"ammotype=",9)!=0)&&                        // ???
        (strncmp(buf,"oldclass=",9)!=0)&&                        // ???
        (strncmp(buf,"pagematerial=",13)!=0)&&                   // ???
        (strncmp(buf,"loot=",5)!=0)&&
        (strncmp(buf,"lockid=",7)!=0)&&                          // ???
        (strncmp(buf,"finishes_quests=",16)!=0)&&
        (strncmp(buf,"set=",4)!=0)&&
        (strncmp(buf,"questid2=",9)!=0)&&                        // ???
        (strncmp(buf,"spellreq=",9)!=0)&&
        (strncmp(buf,"pvprankreq=",11)!=0)&&
        (strncmp(buf,"stackable=",10)!=0)) { lg = fopen("log.log","at");
                                             printf("UNKNOWN      VARIABLE! ADDED TO LOG!\n");
                                             fprintf(lg,"UNKNOWN      VARIABLE || IN = %d %s VR = %s\n",vl0,nm,st);
                                             fclose(lg);
                                           };
/**************************************************************************************************/
    free(buf);
    if (feof(fp)) { printf("All File Was Scanned [EOF]...\n");
                    lg = fopen("log.log","at");
                    fprintf(lg,"\n\nAll File Was Scanned [EOF]...");
                    fclose(lg);
                  };
   }
while (!feof(fp));
fclose(fp);
}

/*********************************************************************
** ThX to ptr, Rockie, Олег4, Fedor, Fazil6 and all who i forgot ^^ **
*********************************************************************/
 
PM MAIL WWW ICQ   Вверх
ptr
Дата 11.7.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 1
Всего: 14



Странно, но у меня все комментарии отображаются нормально (win1251, koi8-r).

Возможно, ты и прав лучше char* (как-то просмотрел).

Цитата(ReGeDiT @  11.7.2006,  14:33 Найти цитируемый пост)
также я сделал всё как ты сказал, всё компилируется... но в винде потом выскакивает критическая ошибка smile

А кто будет выделять память под nm? Поменяй char *nm, например, на char nm[100]. 


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
ReGeDiT
Дата 11.7.2006, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



огромное спасибо! smile правда теперь у меня всё стало Unknown Variable ^^

log.log:
Код

UNKNOWN      VARIABLE || IN = 0  VR = 
UNKNOWN      VARIABLE || IN = 0  VR = 
UNKNOWN      VARIABLE || IN = 0  VR = 
UNKNOWN      VARIABLE || IN = 0  VR = 
UNKNOWN      VARIABLE || IN = 0  VR = 
UNKNOWN      VARIABLE || IN = 0  VR = 
UNKNOWN      VARIABLE || IN = 1 Welcome Note VR = 
UNKNOWN      VARIABLE || IN = 2 1 Silver! VR = 
UNKNOWN      VARIABLE || IN = 3 10 Silver! VR = 
UNKNOWN      VARIABLE || IN = 4 1 Gold! VR = 
UNKNOWN      VARIABLE || IN = 5 10 Gold! VR = 
UNKNOWN      VARIABLE || IN = 6 100 Gold! VR = 
UNKNOWN      VARIABLE || IN = 7 1000 Gold! VR = 
UNKNOWN      VARIABLE || IN = 21 Purple Token VR = 
UNKNOWN      VARIABLE || IN = 22 Green Token VR = 
UNKNOWN      VARIABLE || IN = 23 Yellow Token VR = 
UNKNOWN      VARIABLE || IN = 24 White Token VR = 
UNKNOWN      VARIABLE || IN = 25 Worn Shortsword VR = 
UNKNOWN      VARIABLE || IN = 35 Bent Staff VR = 
UNKNOWN      VARIABLE || IN = 36 Worn Mace VR = 
UNKNOWN      VARIABLE || IN = 37 Worn Axe VR = 
UNKNOWN      VARIABLE || IN = 38 Recruit's Shirt VR = 
UNKNOWN      VARIABLE || IN = 39 Recruit's Pants VR = 
UNKNOWN      VARIABLE || IN = 40 Recruit's Boots VR = 
UNKNOWN      VARIABLE || IN = 43 Squire's Boots VR = 
UNKNOWN      VARIABLE || IN = 44 Squire's Pants VR = 
UNKNOWN      VARIABLE || IN = 45 Squire's Shirt VR = 
UNKNOWN      VARIABLE || IN = 47 Footpad's Shoes VR = 
UNKNOWN      VARIABLE || IN = 48 Footpad's Pants VR = 
UNKNOWN      VARIABLE || IN = 49 Footpad's Shirt VR = 
UNKNOWN      VARIABLE || IN = 51 Neophyte's Boots VR = 
UNKNOWN      VARIABLE || IN = 52 Neophyte's Pants VR = 
UNKNOWN      VARIABLE || IN = 53 Neophyte's Shirt VR = 
UNKNOWN      VARIABLE || IN = 55 Apprentice's Boots VR = 
UNKNOWN      VARIABLE || IN = 56 Apprentice's Robe VR = 
UNKNOWN      VARIABLE || IN = 57 Acolyte's Robe VR = 
UNKNOWN      VARIABLE || IN = 59 Acolyte's Shoes VR = 
UNKNOWN      VARIABLE || IN = 60 Layered Tunic VR = 
UNKNOWN      VARIABLE || IN = 61 Dwarven Leather Pants VR = 
UNKNOWN      VARIABLE || IN = 79 Dwarven Cloth Britches VR = 
UNKNOWN      VARIABLE || IN = 80 Soft Fur-lined Shoes VR = 
UNKNOWN      VARIABLE || IN = 85 Dirty Leather Vest VR = 
UNKNOWN      VARIABLE || IN = 117 Tough Jerky VR = 
UNKNOWN      VARIABLE || IN = 118 Minor Healing Potion VR = 
UNKNOWN      VARIABLE || IN = 120 Thug Pants VR = 
UNKNOWN      VARIABLE || IN = 121 Thug Boots VR = 
UNKNOWN      VARIABLE || IN = 127 Trapper's Shirt VR = 


этот кусок кода проверяет поля, если есть какие-то другие поля кроме этих, он должен записывать в лог другое (неправильное) поле...
раньше при fscanf(fp,"%s",&st) всё работало, с новой же конструкцией это не работает smile может всё-таки надо делать и fscanf? если нет подскажи как лучше...

Код

    if ((strncmp(buf,"bonding=",8)!=0)&&
        (strncmp(buf,"buyprice=",9)!=0)&&
        (strncmp(buf,"class=",6)!=0)&&
        (strncmp(buf,"classes=",8)!=0)&&
        (strncmp(buf,"description=",12)!=0)&&
        (strncmp(buf,"language=",9)!=0)&&
        (strncmp(buf,"level=",6)!=0)&&
        (strncmp(buf,"material=",9)!=0)&&
        (strncmp(buf,"maxcount=",9)!=0)&&
        (strncmp(buf,"model=",6)!=0)&&
        (strncmp(buf,"name=",5)!=0)&&
        (strncmp(buf,"pagetext=",9)!=0)&&
        (strncmp(buf,"quality=",8)!=0)&&
        (strncmp(buf,"races=",6)!=0)&&
        (strncmp(buf,"reqlevel=",9)!=0)&&
        (strncmp(buf,"sellprice=",10)!=0)&&
        (strncmp(buf,"//",2)!=0)&&
        (strncmp(buf,"#include",8)!=0)&&
        (strncmp(buf,"[item",5)!=0)&&
        (strncmp(buf,"damage=",7)!=0)&&
        (strncmp(buf,"delay=",6)!=0)&&
        (strncmp(buf,"durability=",11)!=0)&&
        (strncmp(buf,"inventorytype=",14)!=0)&&
        (strncmp(buf,"sheath=",7)!=0)&&
        (strncmp(buf,"resistance1=",12)!=0)&&
        (strncmp(buf,"resistance2=",12)!=0)&&
        (strncmp(buf,"resistance3=",12)!=0)&&
        (strncmp(buf,"resistance4=",12)!=0)&&
        (strncmp(buf,"resistance5=",12)!=0)&&
        (strncmp(buf,"resistance6=",12)!=0)&&
        (strncmp(buf,"resistance7=",12)!=0)&&
        (strncmp(buf,"resistances=",12)!=0)&&                    // ???
        (strncmp(buf,"bonus=",6)!=0)&&
        (strncmp(buf,"questid=",8)!=0)&&
        (strncmp(buf,"block=",6)!=0)&&
        (strncmp(buf,"part=",5)!=0)&&
        (strncmp(buf,"flags=",6)!=0)&&
        (strncmp(buf,"extra=",6)!=0)&&                           // ???
        (strncmp(buf,"variation=",10)!=0)&&
        (strncmp(buf,"containerslots=",15)!=0)&&
        (strncmp(buf,"subclass=",9)!=0)&&
        (strncmp(buf,"spell=",6)!=0)&&
        (strncmp(buf,"skill=",6)!=0)&&
        (strncmp(buf,"skillrank=",10)!=0)&&
        (strncmp(buf,"questscript=",12)!=0)&&
        (strncmp(buf,"starts_quests=",14)!=0)&&                  // 1 ?
        (strncmp(buf,"startquest=",11)!=0)&&                     // 1 ?
        (strncmp(buf,"ammotype=",9)!=0)&&                        // ???
        (strncmp(buf,"oldclass=",9)!=0)&&                        // ???
        (strncmp(buf,"pagematerial=",13)!=0)&&                   // ???
        (strncmp(buf,"loot=",5)!=0)&&
        (strncmp(buf,"lockid=",7)!=0)&&                          // ???
        (strncmp(buf,"finishes_quests=",16)!=0)&&
        (strncmp(buf,"set=",4)!=0)&&
        (strncmp(buf,"questid2=",9)!=0)&&                        // ???
        (strncmp(buf,"spellreq=",9)!=0)&&
        (strncmp(buf,"pvprankreq=",11)!=0)&&
        (strncmp(buf,"stackable=",10)!=0)) { lg = fopen("log.log","at");
                                             printf("UNKNOWN      VARIABLE! ADDED TO LOG!\n");
                                             fprintf(lg,"UNKNOWN      VARIABLE || ID = %d NM = %s VR = %s\n",vl0,nm,st);
                                             fclose(lg);
                                           };
 
PM MAIL WWW ICQ   Вверх
ptr
Дата 11.7.2006, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 1
Всего: 14



Что-то мне с предыдущим файлом такого повторить не удалось.
Кстати st тебе не нужен. 

Это сообщение отредактировал(а) ptr - 11.7.2006, 15:45


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
ReGeDiT
Дата 11.7.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



а что мне делать то? smile))))

было так, работало
Код

do {
    fscanf(fp,"%s",&st);
...
    if ((strncmp(st,"bonding=",8)!=0)&& // Работает 100%
        (strncmp(st,"buyprice=",9)!=0)&&
        (strncmp(st,"class=",6)!=0)&&
        (strncmp(st,"classes=",8)!=0)&&
        (strncmp(st,"description=",12)!=0)&&
        (strncmp(st,"language=",9)!=0)&&
        (strncmp(st,"level=",6)!=0)&&
        (strncmp(st,"material=",9)!=0)&&
        (strncmp(st,"maxcount=",9)!=0)&&
        (strncmp(st,"model=",6)!=0)&&
        (strncmp(st,"name=",5)!=0)&&
        (strncmp(st,"pagetext=",9)!=0)&&
        (strncmp(st,"quality=",8)!=0)&&
        (strncmp(st,"races=",6)!=0)&&
        (strncmp(st,"reqlevel=",9)!=0)&&
        (strncmp(st,"sellprice=",10)!=0)&&
        (strncmp(st,"//",2)!=0)&&
        (strncmp(st,"#include",8)!=0)&&
        (strncmp(st,"[item",5)!=0)&&
        (strncmp(st,"damage=",7)!=0)&&
        (strncmp(st,"delay=",6)!=0)&&
        (strncmp(st,"durability=",11)!=0)&&
        (strncmp(st,"inventorytype=",14)!=0)&&
        (strncmp(st,"sheath=",7)!=0)&&
        (strncmp(st,"resistance1=",12)!=0)&&
        (strncmp(st,"resistance2=",12)!=0)&&
        (strncmp(st,"resistance3=",12)!=0)&&
        (strncmp(st,"resistance4=",12)!=0)&&
        (strncmp(st,"resistance5=",12)!=0)&&
        (strncmp(st,"resistance6=",12)!=0)&&
        (strncmp(st,"resistance7=",12)!=0)&&
        (strncmp(st,"resistances=",12)!=0)&&                    // ???
        (strncmp(st,"bonus=",6)!=0)&&
        (strncmp(st,"questid=",8)!=0)&&
        (strncmp(st,"block=",6)!=0)&&
        (strncmp(st,"part=",5)!=0)&&
        (strncmp(st,"flags=",6)!=0)&&
        (strncmp(st,"extra=",6)!=0)&&                           // ???
        (strncmp(st,"variation=",10)!=0)&&
        (strncmp(st,"containerslots=",15)!=0)&&
        (strncmp(st,"subclass=",9)!=0)&&
        (strncmp(st,"spell=",6)!=0)&&
        (strncmp(st,"skill=",6)!=0)&&
        (strncmp(st,"skillrank=",10)!=0)&&
        (strncmp(st,"questscript=",12)!=0)&&
        (strncmp(st,"starts_quests=",14)!=0)&&                  // 1 ?
        (strncmp(st,"startquest=",11)!=0)&&                     // 1 ?
        (strncmp(st,"ammotype=",9)!=0)&&                        // ???
        (strncmp(st,"oldclass=",9)!=0)&&                        // ???
        (strncmp(st,"pagematerial=",13)!=0)&&                   // ???
        (strncmp(st,"loot=",5)!=0)&&
        (strncmp(st,"lockid=",7)!=0)&&                          // ???
        (strncmp(st,"finishes_quests=",16)!=0)&&
        (strncmp(st,"set=",4)!=0)&&
        (strncmp(st,"questid2=",9)!=0)&&                        // ???
        (strncmp(st,"spellreq=",9)!=0)&&
        (strncmp(st,"pvprankreq=",11)!=0)&&
        (strncmp(st,"stackable=",10)!=0)) { lg = fopen("log.log","at");
                        printf("UNKNOWN      VARIABLE! ADDED TO LOG!\n");
                        fprintf(lg,"IN = %d %s VR = %s\n",vl0,nm,st);
                            fclose(lg);
                          };
...


теперь так, и не работает
Код

do {
    buf = getline(fp);
...
if ((strncmp(buf,"bonding=",8)!=0)&&
        (strncmp(buf,"buyprice=",9)!=0)&&
        (strncmp(buf,"class=",6)!=0)&&
        (strncmp(buf,"classes=",8)!=0)&&
        (strncmp(buf,"description=",12)!=0)&&
        (strncmp(buf,"language=",9)!=0)&&
        (strncmp(buf,"level=",6)!=0)&&
        (strncmp(buf,"material=",9)!=0)&&
        (strncmp(buf,"maxcount=",9)!=0)&&
        (strncmp(buf,"model=",6)!=0)&&
        (strncmp(buf,"name=",5)!=0)&&
        (strncmp(buf,"pagetext=",9)!=0)&&
        (strncmp(buf,"quality=",8)!=0)&&
        (strncmp(buf,"races=",6)!=0)&&
        (strncmp(buf,"reqlevel=",9)!=0)&&
        (strncmp(buf,"sellprice=",10)!=0)&&
        (strncmp(buf,"//",2)!=0)&&
        (strncmp(buf,"#include",8)!=0)&&
        (strncmp(buf,"[item",5)!=0)&&
        (strncmp(buf,"damage=",7)!=0)&&
        (strncmp(buf,"delay=",6)!=0)&&
        (strncmp(buf,"durability=",11)!=0)&&
        (strncmp(buf,"inventorytype=",14)!=0)&&
        (strncmp(buf,"sheath=",7)!=0)&&
        (strncmp(buf,"resistance1=",12)!=0)&&
        (strncmp(buf,"resistance2=",12)!=0)&&
        (strncmp(buf,"resistance3=",12)!=0)&&
        (strncmp(buf,"resistance4=",12)!=0)&&
        (strncmp(buf,"resistance5=",12)!=0)&&
        (strncmp(buf,"resistance6=",12)!=0)&&
        (strncmp(buf,"resistance7=",12)!=0)&&
        (strncmp(buf,"resistances=",12)!=0)&&                    // ???
        (strncmp(buf,"bonus=",6)!=0)&&
        (strncmp(buf,"questid=",8)!=0)&&
        (strncmp(buf,"block=",6)!=0)&&
        (strncmp(buf,"part=",5)!=0)&&
        (strncmp(buf,"flags=",6)!=0)&&
        (strncmp(buf,"extra=",6)!=0)&&                           // ???
        (strncmp(buf,"variation=",10)!=0)&&
        (strncmp(buf,"containerslots=",15)!=0)&&
        (strncmp(buf,"subclass=",9)!=0)&&
        (strncmp(buf,"spell=",6)!=0)&&
        (strncmp(buf,"skill=",6)!=0)&&
        (strncmp(buf,"skillrank=",10)!=0)&&
        (strncmp(buf,"questscript=",12)!=0)&&
        (strncmp(buf,"starts_quests=",14)!=0)&&                  // 1 ?
        (strncmp(buf,"startquest=",11)!=0)&&                     // 1 ?
        (strncmp(buf,"ammotype=",9)!=0)&&                        // ???
        (strncmp(buf,"oldclass=",9)!=0)&&                        // ???
        (strncmp(buf,"pagematerial=",13)!=0)&&                   // ???
        (strncmp(buf,"loot=",5)!=0)&&
        (strncmp(buf,"lockid=",7)!=0)&&                          // ???
        (strncmp(buf,"finishes_quests=",16)!=0)&&
        (strncmp(buf,"set=",4)!=0)&&
        (strncmp(buf,"questid2=",9)!=0)&&                        // ???
        (strncmp(buf,"spellreq=",9)!=0)&&
        (strncmp(buf,"pvprankreq=",11)!=0)&&
        (strncmp(buf,"stackable=",10)!=0)) { lg = fopen("log.log","at");
                                             printf("UNKNOWN      VARIABLE! ADDED TO LOG!\n");
                                             fprintf(lg,"UNKNOWN      VARIABLE || [item %d] NM=[%s] VR=%s\n",vl0,nm,buf);
                                             fclose(lg);
                                           };
...



в чём ошибка? или проблема? smile 
PM MAIL WWW ICQ   Вверх
bsa
Дата 11.7.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Выведи на экран значение buf!!!
 

Это сообщение отредактировал(а) bsa - 11.7.2006, 17:52
PM   Вверх
ptr
Дата 11.7.2006, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 1
Всего: 14



ReGeDiT, выложи всю программу и файл items.scp, а то у меня старая программа со старым файлом нормально работает.  

Это сообщение отредактировал(а) ptr - 11.7.2006, 18:03


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
ReGeDiT
Дата 11.7.2006, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



Код

/***************************
** Модуль проверки файлов **
***************************/

#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

#define BUF_SIZE 256

char* getline(FILE* stream)
{
    int cur_size=0;
    char* buf=(char*)malloc(sizeof(char)*BUF_SIZE);
    if (NULL==buf) { fprintf(stderr,"Couldn't allocate memory!");
             return NULL;
           }
    while(fgets(&buf[cur_size],BUF_SIZE,stream))
      { if ('\n'==buf[strlen(buf)-1])
      {
       buf[strlen(buf)-1]='\0';
       return buf;
      }
    cur_size+=BUF_SIZE-1;
    buf=(char*)realloc(buf,cur_size+BUF_SIZE);
    if (NULL==buf)
      {
       fprintf(stderr,"Couldn't allocate memory!");
       return NULL;
      }
      }
    return buf;
}

/***************************************
** Проверка items.scp на правильность **
***************************************/

FILE *fp, *lg;
int vl0 = 0, vl1 = 0, vl2 = 0, dif = 0, nmb = 0, id = 0;
char nm[100];
char ck[100];
char *buf = NULL;

void main(void)
{
lg = fopen("log.log","wt");
fprintf(lg,"WoWCHK v0.3 Auto-Generated LOG-File\n\n[items.scp]\n\nNM : Item Name\nBP : Buy Price\nSP : Sell Price\nDF : Difference\nVR : Variable\n\n");
fclose(lg);
fp = fopen("items.scp","rt");
do {
    buf = getline(fp);
    if (strncmp(buf,"[item",5)==0) { sscanf(buf,"[item %d]",&vl0); };
    printf("[item %d]\n",vl0);
    if (strncmp(buf,"name=",5)==0) { strncpy(nm,strstr(buf,"=")+1,99); };
    printf("name=%s]\n",nm);
    if (strncmp(buf,"buyprice=",9)==0)   {  // тут всё работает 100%
    vl1 = atoi(strstr(buf,"=")+1);          // тут всё работает 100%
    printf("buyprice=%d\n",vl1);        }; // тут всё работает 100%
    if (strncmp(buf,"sellprice=",10)==0) { // Работает 100%
    vl2 = atoi(strstr(buf,"=")+1);
    printf("sellprice=%d\n",vl2);
    dif = vl2-vl1;
    if ((vl1==vl2)&&(vl1!=1)&&(vl2!=1)) { printf("SELLPRICE == BUYPRICE! ADDED TO LOG!\n");
                                          lg = fopen("log.log","at");
                                          fprintf(lg,"SELLPRICE == BUYPRICE || [item %d] NM=[%s] BP=%d SP=%d DF=%d\n",vl0,nm,vl1,vl2,dif);
                                          fclose(lg);
                                        };
    if (vl2>vl1) { printf("SELLPRICE >> BUYPRICE! ADDED TO LOG!\n");
                   lg = fopen("log.log","at");
                   fprintf(lg,"SELLPRICE >> BUYPRICE || [item %d] NM=[%s] BP=%d SP=%d DF=%d\n",vl0,nm,vl1,vl2,dif);
                   fclose(lg);
                 };
                                };
/*    if ((strncmp(buf,"bonding=",8)!=0)&&
        (strncmp(buf,"buyprice=",9)!=0)&&
        (strncmp(buf,"class=",6)!=0)&&
        (strncmp(buf,"classes=",8)!=0)&&
        (strncmp(buf,"description=",12)!=0)&&
        (strncmp(buf,"language=",9)!=0)&&
        (strncmp(buf,"level=",6)!=0)&&
        (strncmp(buf,"material=",9)!=0)&&
        (strncmp(buf,"maxcount=",9)!=0)&&
        (strncmp(buf,"model=",6)!=0)&&
        (strncmp(buf,"name=",5)!=0)&&
        (strncmp(buf,"pagetext=",9)!=0)&&
        (strncmp(buf,"quality=",8)!=0)&&
        (strncmp(buf,"races=",6)!=0)&&
        (strncmp(buf,"reqlevel=",9)!=0)&&
        (strncmp(buf,"sellprice=",10)!=0)&&
        (strncmp(buf,"//",2)!=0)&&
        (strncmp(buf,"#include",8)!=0)&&
        (strncmp(buf,"[item",5)!=0)&&
        (strncmp(buf,"damage=",7)!=0)&&
        (strncmp(buf,"delay=",6)!=0)&&
        (strncmp(buf,"durability=",11)!=0)&&
        (strncmp(buf,"inventorytype=",14)!=0)&&
        (strncmp(buf,"sheath=",7)!=0)&&
        (strncmp(buf,"resistance1=",12)!=0)&&
        (strncmp(buf,"resistance2=",12)!=0)&&
        (strncmp(buf,"resistance3=",12)!=0)&&
        (strncmp(buf,"resistance4=",12)!=0)&&
        (strncmp(buf,"resistance5=",12)!=0)&&
        (strncmp(buf,"resistance6=",12)!=0)&&
        (strncmp(buf,"resistance7=",12)!=0)&&
        (strncmp(buf,"resistances=",12)!=0)&&                    // ???
        (strncmp(buf,"bonus=",6)!=0)&&
        (strncmp(buf,"questid=",8)!=0)&&
        (strncmp(buf,"block=",6)!=0)&&
        (strncmp(buf,"part=",5)!=0)&&
        (strncmp(buf,"flags=",6)!=0)&&
        (strncmp(buf,"extra=",6)!=0)&&                           // ???
        (strncmp(buf,"variation=",10)!=0)&&
        (strncmp(buf,"containerslots=",15)!=0)&&
        (strncmp(buf,"subclass=",9)!=0)&&
        (strncmp(buf,"spell=",6)!=0)&&
        (strncmp(buf,"skill=",6)!=0)&&
        (strncmp(buf,"skillrank=",10)!=0)&&
        (strncmp(buf,"questscript=",12)!=0)&&
        (strncmp(buf,"starts_quests=",14)!=0)&&                  // 1 ?
        (strncmp(buf,"startquest=",11)!=0)&&                     // 1 ?
        (strncmp(buf,"ammotype=",9)!=0)&&                        // ???
        (strncmp(buf,"oldclass=",9)!=0)&&                        // ???
        (strncmp(buf,"pagematerial=",13)!=0)&&                   // ???
        (strncmp(buf,"loot=",5)!=0)&&
        (strncmp(buf,"lockid=",7)!=0)&&                          // ???
        (strncmp(buf,"finishes_quests=",16)!=0)&&
        (strncmp(buf,"set=",4)!=0)&&
        (strncmp(buf,"questid2=",9)!=0)&&                        // ???
        (strncmp(buf,"spellreq=",9)!=0)&&
        (strncmp(buf,"pvprankreq=",11)!=0)&&
        (strncmp(buf,"stackable=",10)!=0)) { lg = fopen("log.log","at");
                                             printf("UNKNOWN      VARIABLE! ADDED TO LOG!\n");
                                             fprintf(lg,"UNKNOWN      VARIABLE || [item %d] NM=[%s] VR=%s\n",vl0,nm,buf);
                                             fclose(lg);
                                           };
*/    free(buf);
    if (feof(fp)) { printf("All File Was Scanned [EOF]...\n");
                    lg = fopen("log.log","at");
                    fprintf(lg,"\nAll File Was Scanned [EOF]...");
                    fclose(lg);
                  };
   }
while (!feof(fp));
fclose(fp);
}

/*********************************************************************
** ThX to ptr, Rockie, Олег4, Fedor, Fazil6 and all who i forgot ^^ **
** Especially thx to ptr, for his help                              **
*********************************************************************/


items.scp (очень большой, в оригинале 4.5 мегабайта)
Код

[item 1]
bonding=4
buyprice=300
class=12
classes=07FF
description=Welcome to World of Darkness.
language=1
level=1
material=-1
maxcount=1
model=5567
name=Welcome Note
pagetext=1
quality=1
races=0FF
reqlevel=1
sellprice=100
stackable=1

[item 2]
quality=0
bonding=4
buyprice=300
class=12
classes=07FF
description=If you sell this item, you get 1 Silver for it!
level=1
material=0
model=29842
name=1 Silver!
races=0FF
reqlevel=1
sellprice=100

[item 3]
quality=0
bonding=4
buyprice=3000
class=12
classes=07FF
description=If you sell this item, you get 10 Silver for it!
level=1
material=0
model=29842
name=10 Silver!
races=0FF
reqlevel=1
sellprice=1000

[item 4]
quality=0
bonding=4
buyprice=30000
class=12
classes=07FF
description=If you sell this item, you get 1 Gold for it!
level=1
material=0
model=11766
name=1 Gold!
races=0FF
reqlevel=1
sellprice=10000

[item 5]
quality=0
bonding=4
buyprice=300000
class=12
classes=07FF
description=If you sell this item, you get 10 Gold for it!
level=1
material=0
model=11766
name=10 Gold!
races=0FF
reqlevel=1
sellprice=100000

[item 6]
quality=0
bonding=4
buyprice=3000000
class=12
classes=07FF
description=If you sell this item, you get 100 Gold for it!
level=1
material=0
model=11766
name=100 Gold!
races=0FF
reqlevel=1
sellprice=1000000

[item 7]
quality=0
bonding=4
buyprice=30000000
class=12
classes=07FF
description=If you sell this item, you get 1000 Gold for it!
level=1
material=0
model=11766
name=1000 Gold!
races=0FF
reqlevel=1
sellprice=10000000

[item 21]
bonding=4
buyprice=300
class=12
classes=07FF
description=Collect 250 purple tokens for the exchange.
level=1
material=-1
maxcount=1
model=5917
name=Purple Token
quality=1
races=0FF
reqlevel=1
sellprice=100
stackable=250

[item 22]
bonding=4
buyprice=1500
class=12
classes=07FF
description=Collect 100 green tokens for the exchange.
level=1
material=-1
maxcount=1
model=27801
name=Green Token
quality=1
races=0FF
reqlevel=1
sellprice=500
stackable=100

[item 23]
bonding=4
buyprice=15000
class=12
classes=07FF
description=Collect 50 yellow tokens for the exchange.
level=1
material=-1
maxcount=1
model=27556
name=Yellow Token
quality=1
races=0FF
reqlevel=1
sellprice=5000
stackable=50

[item 24]
bonding=4
buyprice=90000
class=12
classes=07FF
description=Collect 10 white tokens for the exchange.
level=1
material=-1
maxcount=1
model=23293
name=White Token
quality=1
races=0FF
reqlevel=1
sellprice=30000
stackable=10

[item 25]
buyprice=35
class=2
classes=07FF
damage=1 3 0
delay=1900
durability=20
inventorytype=21
language=1
level=2
material=1
model=1542
name=Worn Shortsword
quality=1
races=0FF
reqlevel=1
sellprice=7
sheath=3
stackable=1
subclass=7

[item 35]
buyprice=47
class=2
classes=07FF
damage=3 5 0
delay=2900
durability=25
inventorytype=17
level=2
material=2
model=472
name=Bent Staff
quality=1
races=0FF
reqlevel=1
sellprice=9
sheath=2
stackable=1
subclass=10

[item 36]
buyprice=38
class=2
classes=07FF
damage=1 3 0
delay=1900
durability=20
inventorytype=21
level=2
material=2
model=5194
name=Worn Mace
quality=1
races=0FF
reqlevel=1
sellprice=7
sheath=3
stackable=1
subclass=4

[item 37]
subclass=0
buyprice=38
class=2
classes=07FF
damage=1 3 0
delay=2000
durability=20
inventorytype=21
level=2
material=1
model=14029
name=Worn Axe
quality=1
races=0FF
reqlevel=1
sellprice=7
sheath=3
stackable=1

[item 38]
subclass=0
buyprice=1
class=4
classes=07FF
inventorytype=4
level=1
material=7
model=9891
name=Recruit's Shirt
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 39]
quality=0
buyprice=5
class=4
classes=07FF
durability=25
inventorytype=7
level=1
material=7
model=9892
name=Recruit's Pants
races=0FF
reqlevel=1
resistance1=2
sellprice=1
stackable=1
subclass=1

[item 40]
subclass=0
buyprice=4
class=4
classes=07FF
inventorytype=8
level=1
material=7
model=10141
name=Recruit's Boots
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 43]
subclass=0
buyprice=4
class=4
classes=07FF
inventorytype=8
level=1
material=7
model=10272
name=Squire's Boots
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 44]
quality=0
buyprice=4
class=4
classes=07FF
durability=25
inventorytype=7
level=1
material=7
model=9937
name=Squire's Pants
races=0FF
reqlevel=1
resistance1=2
sellprice=1
stackable=1
subclass=1

[item 45]
subclass=0
buyprice=1
class=4
classes=07FF
inventorytype=4
level=1
material=7
model=3265
name=Squire's Shirt
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 47]
subclass=0
buyprice=4
class=4
classes=07FF
inventorytype=8
level=1
material=7
model=9915
name=Footpad's Shoes
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 48]
quality=0
buyprice=4
class=4
classes=07FF
durability=25
inventorytype=7
level=1
material=7
model=9913
name=Footpad's Pants
races=0FF
reqlevel=1
resistance1=2
sellprice=1
stackable=1
subclass=1

[item 49]
subclass=0
buyprice=1
class=4
classes=07FF
inventorytype=4
level=1
material=7
model=9906
name=Footpad's Shirt
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 51]
subclass=0
buyprice=5
class=4
classes=07FF
inventorytype=8
level=1
material=7
model=9946
name=Neophyte's Boots
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 52]
quality=0
buyprice=5
class=4
classes=07FF
durability=25
inventorytype=7
level=1
material=7
model=9945
name=Neophyte's Pants
races=0FF
reqlevel=1
resistance1=2
sellprice=1
stackable=1
subclass=1

[item 53]
subclass=0
buyprice=1
class=4
classes=07FF
inventorytype=4
level=1
material=7
model=9944
name=Neophyte's Shirt
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 55]
subclass=0
buyprice=5
class=4
classes=07FF
inventorytype=8
level=1
material=7
model=9929
name=Apprentice's Boots
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 56]
quality=0
buyprice=5
class=4
classes=07FF
durability=35
inventorytype=20
level=1
material=7
model=12647
name=Apprentice's Robe
races=0FF
reqlevel=1
resistance1=3
sellprice=1
stackable=1
subclass=1

[item 57]
quality=0
buyprice=5
class=4
classes=07FF
durability=35
inventorytype=20
level=1
material=7
model=12645
name=Acolyte's Robe
races=0FF
reqlevel=1
resistance1=3
sellprice=1
stackable=1
subclass=1

[item 59]
subclass=0
buyprice=5
class=4
classes=07FF
inventorytype=8
level=1
material=7
model=3261
name=Acolyte's Shoes
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 60]
bonding=1
buyprice=60
class=4
classes=07FF
durability=45
inventorytype=5
level=5
material=8
model=16891
name=Layered Tunic
quality=1
questid=6
races=0FF
reqlevel=1
resistance1=33
sellprice=12
stackable=1
subclass=2

[item 61]
bonding=1
buyprice=60
class=4
classes=07FF
durability=35
inventorytype=7
level=5
material=8
model=16953
name=Dwarven Leather Pants
quality=1
questid=183
races=0FF
reqlevel=1
resistance1=29
sellprice=12
stackable=1
subclass=2

[item 79]
bonding=1
buyprice=52
class=4
classes=07FF
durability=30
inventorytype=7
level=5
material=7
model=16847
name=Dwarven Cloth Britches
quality=1
questid=183
races=0FF
reqlevel=1
resistance1=9
sellprice=10
stackable=1
subclass=1

[item 80]
bonding=1
buyprice=35
class=4
classes=07FF
durability=20
inventorytype=8
level=5
material=7
model=16854
name=Soft Fur-lined Shoes
quality=1
questid=33
races=0FF
reqlevel=1
resistance1=7
sellprice=7
stackable=1
subclass=1

[item 85]
buyprice=62
class=4
classes=07FF
durability=45
inventorytype=5
level=5
material=8
model=16883
name=Dirty Leather Vest
quality=1
races=0FF
reqlevel=1
resistance1=33
sellprice=12
stackable=1
subclass=2

[item 117]
buyprice=25
class=0
classes=07FF
level=5
material=-1
model=2473
name=Tough Jerky
quality=1
questid=815, questid2=2160
races=0FF
reqlevel=1
sellprice=1
spell=433 0 -1 0 1000
stackable=20

[item 118]
buyprice=20
class=0
classes=07FF
level=5
material=3
model=15710
name=Minor Healing Potion
quality=1
questid=794, questid2=103
races=0FF
reqlevel=1
sellprice=5
spell=439 0 -1 0 120000
stackable=5

[item 120]
quality=0
buyprice=4
class=4
classes=07FF
durability=25
inventorytype=7
level=1
material=7
model=10006
name=Thug Pants
races=0FF
reqlevel=1
resistance1=2
sellprice=1
stackable=1
subclass=1

[item 121]
subclass=0
buyprice=4
class=4
classes=07FF
inventorytype=8
level=1
material=7
model=10008
name=Thug Boots
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 127]
subclass=0
buyprice=1
class=4
classes=07FF
inventorytype=4
level=1
material=7
model=9996
name=Trapper's Shirt
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 128]
quality=0
buyprice=5
class=4
classes=07FF
durability=25
flags=16
inventorytype=7
level=1
material=7
model=396
name=Deprecated Tauren Trapper's Pants
races=0FF
reqlevel=1
resistance1=2
sellprice=1
stackable=1
subclass=1

[item 129]
subclass=0
buyprice=5
class=4
classes=07FF
inventorytype=8
level=1
material=7
model=9977
name=Rugged Trapper's Boots
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 139]
quality=0
buyprice=4
class=4
classes=07FF
durability=25
inventorytype=7
level=1
material=7
model=9988
name=Brawler's Pants
races=0FF
reqlevel=1
resistance1=2
sellprice=1
stackable=1
subclass=1

[item 140]
subclass=0
buyprice=4
class=4
classes=07FF
inventorytype=8
level=1
material=7
model=9992
name=Brawler's Boots
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 147]
quality=0
buyprice=5
class=4
classes=07FF
durability=25
inventorytype=7
level=1
material=7
model=9975
name=Rugged Trapper's Pants
races=0FF
reqlevel=1
resistance1=2
sellprice=1
stackable=1
subclass=1

[item 148]
subclass=0
buyprice=1
class=4
classes=07FF
inventorytype=4
level=1
material=7
model=9976
name=Rugged Trapper's Shirt
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 153]
quality=0
buyprice=5
class=4
classes=07FF
durability=30
inventorytype=7
level=1
material=8
model=10050
name=Primitive Kilt
races=0FF
reqlevel=1
resistance1=14
sellprice=1
stackable=1
subclass=2

[item 154]
subclass=0
buyprice=1
class=4
classes=07FF
inventorytype=4
level=1
material=7
model=10058
name=Primitive Mantle
quality=1
races=0FF
reqlevel=1
sellprice=1
stackable=1

[item 159]
buyprice=25
class=0
classes=07FF
level=5
material=-1
model=18084
name=Refreshing Spring Water
quality=1
questid=381, questid2=2160
races=0FF
reqlevel=1
sellprice=1
spell=430 0 -1 0 59 1000
stackable=20

[item 182]
bonding=4
class=12
classes=07FF
flags=2048
level=1
material=-1
maxcount=1
model=7038
name=Garrick's Head
quality=1
races=0FF
reqlevel=1
stackable=1

[item 192]
description=THIS IS A GM ITEM
resistance2=110
buyprice=271373
class=2
classes=07FF
damage=5 10 2
damage=51 63 0
damage=6 60 4
delay=500
inventorytype=21
level=75
material=6
model=5279
name=Martin Thunder
quality=1
races=0FF
reqlevel=60
resistance1=100
resistance3=110
resistance4=100
resistance5=100
resistance6=100
sellprice=54274
sheath=3
spell=265 0 0 -1 0 -1
stackable=1
subclass=14

[item 193]
buyprice=48
class=4
classes=07FF
durability=40
inventorytype=5
level=5
material=7
model=16579
name=Tattered Cloth Vest
quality=1
races=0FF
reqlevel=1
resistance1=10
sellprice=9
stackable=1
subclass=1

[item 194]
buyprice=49
class=4
classes=07FF
durability=30
inventorytype=7
level=5
material=7
model=16580
name=Tattered Cloth Pants
quality=1
races=0FF
reqlevel=1
resistance1=9
sellprice=9
stackable=1
subclass=1

[item 195]
buyprice=36
class=4
classes=07FF
durability=20
inventorytype=8
level=5
material=7
model=16582
name=Tattered Cloth Boots
quality=1
races=0FF
reqlevel=1
resistance1=7
sellprice=7
stackable=1
subclass=1

[item 200]
buyprice=2270
class=4
classes=07FF
durability=60
inventorytype=5
level=22
material=7
model=16777
name=Thick Cloth Vest
quality=1
races=0FF
reqlevel=17
resistance1=34
sellprice=454
stackable=1
subclass=1

[item 201]
buyprice=2278
class=4
classes=07FF
durability=45
inventorytype=7
level=22
material=7
model=16778
name=Thick Cloth Pants
quality=1
races=0FF
reqlevel=17
resistance1=30
sellprice=455
stackable=1
subclass=1

[item 202]
buyprice=1714
class=4
classes=07FF
durability=30
inventorytype=8
level=22
material=7
model=16780
name=Thick Cloth Shoes
quality=1
races=0FF
reqlevel=17
resistance1=24
sellprice=342
stackable=1
subclass=1

[item 203]
buyprice=1147
class=4
classes=07FF
durability=20
inventorytype=10
level=22
material=7
model=16779
name=Thick Cloth Gloves
quality=1
races=0FF
reqlevel=17
resistance1=21
sellprice=229
stackable=1
subclass=1

[item 209]
buyprice=60
class=4
classes=07FF
durability=35
inventorytype=7
level=5
material=8
model=17140
name=Dirty Leather Pants
quality=1
races=0FF
reqlevel=1
resistance1=29
sellprice=12
stackable=1
subclass=2

[item 210]
buyprice=45
class=4
classes=07FF
durability=20
inventorytype=8
level=5
material=8
model=14444
name=Dirty Leather Boots
quality=1
races=0FF
reqlevel=1
resistance1=23
sellprice=9
stackable=1
subclass=2

[item 236]
buyprice=2795
class=4
classes=07FF
durability=75
inventorytype=5
level=22
material=8
model=14278
name=Cured Leather Armor
quality=1
races=0FF
reqlevel=17
resistance1=77
sellprice=559
stackable=1
subclass=2

[item 237]
buyprice=2805
class=4
classes=07FF
durability=55
inventorytype=7
level=22
material=8
model=14476
name=Cured Leather Pants
quality=1
races=0FF
reqlevel=17
resistance1=67
sellprice=561
stackable=1
subclass=2

[item 238]
buyprice=2112
class=4
classes=07FF
durability=35
inventorytype=8
level=22
material=8
model=14474
name=Cured Leather Boots
quality=1
races=0FF
reqlevel=17
resistance1=53
sellprice=422
stackable=1
subclass=2

[item 239]
buyprice=1413
class=4
classes=07FF
durability=25
inventorytype=10
level=22
material=8
model=14475
name=Cured Leather Gloves
quality=1
races=0FF
reqlevel=17
resistance1=48
sellprice=282
stackable=1
subclass=2

[item 285]
buyprice=3555
class=4
classes=07FF
durability=85
inventorytype=5
level=22
material=5
model=16101
name=Scalemail Vest
quality=1
races=0FF
reqlevel=17
resistance1=165
sellprice=711
stackable=1
subclass=3
 
PM MAIL WWW ICQ   Вверх
ReGeDiT
Дата 11.7.2006, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



проблема решилась

Код

        (strncmp(buf,"",1)!=0)&&                                // Empty Line :)
        (strncmp(buf," ",1)!=0)&&                               // Space
        (strncmp(buf,"ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННээээЭЭЭЭ",200)!=0)&&
 
PM MAIL WWW ICQ   Вверх
bsa
Дата 11.7.2006, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Может лучше делать не от обратного? А то какие-то глупости получаются, если честно. 
PM   Вверх
ReGeDiT
Дата 11.7.2006, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.7.2006
Где: Пущино на Оке

Репутация: нет
Всего: нет



всё уже smile))) всем спасибо, особенно ptr 
PM MAIL WWW ICQ   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1253 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.