/*$Id: iceb_u_pole3.c,v 1.7 2013/05/17 14:58:43 sasa Exp $*/
/*25.04.2013    16.03.1989      Белых А.И.      iceb_u_pole3.c
Подпрограмма извлечения из строки символов нужного номера поля
Рядом стоящие поля пропускаются
Если вернули "0" значит заказанный номер поля существует
если вернули "1" - нет
*/
#include	"iceb_util.h"

int iceb_u_pole3(const char *D, //Строка из которой извлекают
class iceb_u_str *K, //Поле которое выделили из строки
int N,    //Порядковый номер поля которое нужно выделить
char R)   //Разделитель которым ограничено поле
{
char stroka[strlen(D)+1];
memset(stroka,'\0',sizeof(stroka));
K->new_plus("");
int voz=iceb_u_pole3(D,stroka,N,R);
if(voz == 0)
  K->new_plus(stroka);
return(voz); 
}

/*************************************/

int iceb_u_pole3(const char *D, //Строка из которой извлекают
char *K, //Поле которое выделили из строки
int N,    //Порядковый номер поля которое нужно выделить
char R)   //Разделитель которым ограничено поле
{
int             I,Z,V;
short           l,ll;

/*Проверяем наличие хоть одного символа*/
Z=0;
for(I=0;D[I] != '\0' ;I++)
 {
  if(D[I]==R && D[I+1] != R)
   {
    Z++;
    break;
   } 
 }
if( Z == 0)
 {
  K[0]='\0';
  return(1);
 }

Z=1;

for(I=0;D[I] != '\0' ;I++)
 {
  if(D[I]==R && D[I+1] != R)
   Z++;
  if(Z == N)
   {
    if(N>1)
     I++;
    V=0;
    for(; D[I]!=R ;I++)
     {
      if(D[I] == '\0' && N == 1)
       {
	K[0]='\0';
	return(1);
       }
      if(D[I] == '\0')
	break;
      K[V]=D[I];
      V++;
     }
    K[V]='\0';
    l=strlen(K);
    /*Убираем пробелы в конце строки*/
/*    printf("%d\n",l);*/
    for(ll=l-1; K[ll] == ' ' || K[ll] == '\t' || K[ll] == '\r'
    || K[ll] == '\n';ll--)
     {
      K[ll]='\0';
     }
/*    printf("R - %c поле - %s  %d %d \n",R,K,strlen(K),K[l]);*/
    return(0);
   }
  }
K[0]='\0';
return(1);
}
