Пример #1
0
cst_string *cst_implode(const cst_val *sl)
{
    const cst_val *v;
    int l=0;
    char *s;

    for (v=sl; v; v=val_cdr(v))
    {
        if (val_stringp(val_car(v)))
            l += cst_strlen(val_string(val_car(v)));
    }

    s = cst_alloc(cst_string,l+1);

    for (v=sl; v; v=val_cdr(v))
    {
        if (val_stringp(val_car(v)))
            cst_sprintf(s,"%s%s",s,val_string(val_car(v)));

    }

    return s;
}
Пример #2
0
char *ru_implode(const cst_val *l)
{
  const cst_val *v;
  size_t n=1;
  char *s,*p;
  for(v=l;(v!=NULL);v=val_cdr(v))
    {
      if(val_stringp(val_car(v)))
        n+=strlen(val_string(val_car(v)));
    }
  s=cst_alloc(char,n);
  p=s;
  for(v=l;(v!=NULL);v=val_cdr(v))
    {
      if(val_stringp(val_car(v)))
        {
          n=strlen(val_string(val_car(v)));
          memcpy(p,val_string(val_car(v)),n);
          p+=n;
        }
    }
  *p='\0';
  return s;
}