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

  #8  
Старый 18.07.2008, 00:42
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

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

проверил все работает
(mfc проект)
Код:
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;
} 
void CSsDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	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 {
			  if(fgets(tstr,49,f1)>0)
			  {

				
				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);
  }	
}
Input.txt
Код:
A:1:2:3:4.44:5:6
Output.txt
Код:
1:2:3:4.44:5:6

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