Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Ворпос по перебору символов в строке


Автор: WhiteSpirit 31.10.2005, 14:07
Необходимо получить строку из txt файла, отформатировать её и занести в StringGrid

Код

void __fastcall TfmMain::ReadHead()
{
        FILE *file;
        if((file=fopen(edFile->Text.c_str(), "rt"))==NULL)
        {
                ShowMessage("Ôàéë íå óäàåòñÿ îòêðûòü");
        }
        else
        {

        const int Ind=8;
        char *s=new char[80];
        char *header[Ind];
        int i=0, j=0;
        fgets(s, 80, file);
        while(*(s+j)!='\0')
        {
                if(*(s+j)=='<')
                {
                        j++;
                        while(*(s+j)!='>')
                        {
                                (header[i]+j)=(s+j);
                        }
                        SG->Cols[i+1]->Strings[0]=*header[i];
                        i++;
                }
        }

        fclose(file);
        }

}



Данный код не работает.

В чем проблема, укажите пожалуйста на ошибку

Автор: codelord 31.10.2005, 14:57
WhiteSpirit Тут экстрасенсов нет, если твой код не работает как ты хочешь чтобы поняли каким образом надо отформатировать строку ??????...

Автор: WhiteSpirit 31.10.2005, 15:27
сорри за сумбур:-)

Суть в следующем:

в текстовом файле есть строка:
<TICER><DATE><CLOSE>...<VOLUME>

Необходимо взять эту строку и вставить в качестве заголовков столбцов в StringGrid

Далее идут строки с данными, но до этого ещё дойти нада.
Добавлено @ 15:28
В смысле заголовки должны быть типа: TICER DATE и т.д.

Автор: BreakPointMAN 1.11.2005, 01:39
Проблема в том, что ты не умеешь работать со строками, указателями, выделять память и еще много в чем... Советую полностью пересмотреть логику работы функции.

Автор: WhiteSpirit 1.11.2005, 09:16
BreakPointMAN согласен, опыта совсем мало. А не посоветуете что почитать? (есть в наличии Подбельский(С++) и Архангельский (Builder), также Страуструп). Где это лучше описано?

А также хотелось бы уточнить от чего отталкиваться в построении данного алгоритма?

Автор: _hunter 1.11.2005, 12:06
что "это"? как символ читать? где угодно одинаково. как строку парсить? думаю, нигде из перечисленных источников...

Автор: WhiteSpirit 1.11.2005, 12:40
а можно ссылочку по данному вопросу?

Автор: codelord 1.11.2005, 12:41
Вот набросал конечно не лучший вариант, думаю можно использовать структуры.
для проверки должен быть файл new.txt в котором будет строка которую раскладываем(только первую строку, но легко и адаптировать.).. в файле end.txt будут полученные слова.
Код

//Создадим Файл и поместим туда слова заключенные в уголки :)..
// в файле new.txt слова заключенные в уголки.
#include <stdio.h>
void main()
 {
   FILE *in, *out;
   in=fopen("new.txt","r");
   out=fopen("end.txt","w");
   char buf[500];
   char slovo[50];
   fgets(buf,500,in);   
   int m=0,z=0,i=0;
   for(i;buf[i]!='\0';i++)
      {
      if(buf[i]=='<'){m=1; continue;}
      if(buf[i]=='>')
           {
              slovo[z]='\0';
             m=0;
              z=0;
              fputs(slovo,out); // тут слово между уголками
              fputc('\n',out); // для наглядности вставляем новую строку.
           }
      if(m) 
           {
           slovo[z]=buf[i];
           z++;
           }      
      }
fclose(in); fclose(out); 
 }

никаких проверок не делал ...

Автор: WhiteSpirit 1.11.2005, 14:24
codelord спасибо за помощь и терпение, к сожалению пока рейтинг добавить не могу (нет 100 постов).

Ну а всё таки мож кто подкинет ссылочку про парсинг на С++?

Автор: _hunter 1.11.2005, 14:39
пожалуйста:
http://www.google.com.ua/search?as_q=%D0%BF%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3+html&num=10&hl=ru&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&as_epq=&as_oq=&as_eq=&lr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=
smile
Добавлено @ 14:42
и вот:
http://forum.vingrad.ru/index.php?showtopic=44922&hl=

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)