Показать сообщение отдельно

  #3  
Старый 17.07.2008, 22:33
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

дафайте и я набросаю 8)

Бил прямо тут так что извиняй за ошибки если что 8)))

...но идея должна быть понятна!
Функция h_f вытаскивает подстроку по ее номеру где определена строка делимитеров(разделителей)

Код:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"

int h_f(char *sourcestr,char *deststr,int nelement,char *delimiterStr,int mode)
{
	int i;
	int mcnt;
	char tstr[300];
	int flrez=0;
	int pstr=0;
        int prepfl;
		*(deststr)=0;
     if(strchr(delimiterStr,*(sourcestr))!=0)
		 prepfl=0;
	 else
		 prepfl=1;
    for(i=0,mcnt=1,flrez=0,prepfl=0;*(sourcestr+i)!=0;i++)
	{
		if(strchr(delimiterStr,*(sourcestr+i))!=NULL)
		{
              if(mode==0)
			  {
                   if(prepfl!=0)
				   {
		            	if(mcnt<=nelement)
			              mcnt++;
			            else
				          break;
				   }
                   prepfl=0;
			  }
			  else
			  {
		            	if(mcnt<=nelement)
			              mcnt++;
			            else
						{
							flrez=1;
				          break;
						}
			  }
		}
		else
		{
          if(mcnt==nelement)
		  {
			  *(deststr+pstr)=*(sourcestr+i);
				  pstr++;
				  flrez=1;
		  }
          prepfl=1;
		}
	}
	*(deststr+pstr)=0;
return flrez;
} 

int main()
{
  FILE *f1,*f2;
  char tstr[200];
  char dstr[50];
  int ind=0;
  int i,j,fl,z;
  if((f1=fopen("input.txt","rt"))!=0)
  {
     if((f2=fopen("output.txt","w+b"))!=0)
     {
        do {
              fgets(tstr,49,f1);
              for(i=1,z=0;h_f(tstr,dstr,i,":\r\n",1)==1;i++) // ИЗМЕНЕНО
             {
                for(j=0,fl=0;*(dstr+j)!=0 && fl==0;j++)
                   if(!(*(dstr+j)>='0' && *(dstr+j)<='9'))
                      if(!(*(dstr+j)=='.'))
                        fl=1;
                if(fl==0)
                {
                  if(z>0)
                    fprintf(f2,":");
                  else
                    z++;
                  fprintf(f2,"%s",dstr);
                }
             }
             fprintf(f2,"\r\n");
        } while(!feof(f1)) ;
        fclose(f2); 
     }
    fclose(f1);
  }
   return 0;
}

Последний раз редактировалось Delimiter; 18.07.2008 в 00:53..