Example #1
0
int string_set_diff(Stringset_s * p_set_a, Stringset_s * p_set_b, Stringset_s * p_set_c)
{
    int i, j, k = 0;

    int set_a_size = string_set_size(p_set_a);
    int set_b_size = string_set_size(p_set_b);

    for(i=0; i < set_a_size; i++)
    {
        for(j=0; j < set_b_size; j++)
        {
            if(strcmp(p_set_a->elements[i], p_set_b->elements[j]) == 0)
            {

                break;
            }


        }

        if(j == set_b_size)
        {

            strncpy(p_set_c->elements[k++], p_set_a->elements[i], strlen(p_set_a->elements[i]));
        }



    }


    p_set_c->size = k;

}
Example #2
0
STRING *string_replace(STRING *str, CHAR *oldstr, CHAR *newstr, BOOL incase)
{
	CHAR *pbackup, *pstr;
	INT oldlen, newlen;
	BOOL found;
	STRING *backup;
	if(!str) return NULL;
	if(!str->str || !oldstr || !newstr) return str;
		
	oldlen = strlen(oldstr);
	newlen = strlen(newstr);	
	
	backup = string_new(str->str);
	
	str = string_set_size(str, str->len * (1 + newlen / oldlen) );
	
	pbackup = backup->str;
	pstr = str->str;
	
	while(*pbackup)
	{
		found = FALSE;
		if(incase)
		{
			if(strnicmp(pbackup, oldstr, oldlen) == 0)
				found = TRUE;
		}
		else
		{
			if(strncmp(pbackup, oldstr, oldlen) == 0)
				found = TRUE;			
		}
		if(found)
		{
			//str = string_truncate(str, 
			strncpy(pstr, newstr, newlen);
			pstr += newlen;
			pbackup += oldlen;
		}
		else
		{
			*pstr = *pbackup;
			pstr++;
			pbackup++;
		}
	}
	string_free(backup);
	*pstr = 0;
	return str;
}
Example #3
0
// delete one element
int string_set_delete(Stringset_s *p_set, const char *str)
{
    int i, index = -1;

    if(p_set == NULL)
    {
        printf("input in null set pointer.\n");
        return -1;
    }

    int size = string_set_size(p_set);
    printf("<begin of string_set_delete> the size is %d.\n", size);
    printf("the string is %s.\n", str);

    for(i = 0; i < size; i++)
    {
        if(strcmp(p_set->elements[i], str) == 0)
        {
            index = i;
            break;
        }
    }

    // found it
    if(index >= 0)
    {
        printf("we got the to delete element.\n");
        for(i = index; i < size -1; i++)
        {
            memset(p_set->elements[i], 0, ELEMENT_LEN);
            strncpy(p_set->elements[i], p_set->elements[i+1], strlen(p_set->elements[i+1]));
        }

        memset(p_set->elements[size - 1], 0, ELEMENT_LEN);

        p_set->size--;
    }

    printf("end of delete set, size is %d.\n", p_set->size);
    
    return 0;
}
Example #4
0
// every element is different
int string_set_add(Stringset_s *p_set, const char *str)
{
    if(p_set == NULL)
    {
        printf("input in null set pointer.\n");
        return 0;
    }

    int size = string_set_size(p_set);

    if(size == ELEMENTS_NUMBER)
    {
        printf("string set is full.\n");
        return -1;
    }

    
    snprintf(p_set->elements[size], ELEMENT_LEN, "%s", str);

    p_set->size++;
}