
17.07.2008, 22:33
|
|
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..
|
|
|