Showing posts with label Samsung interview Question in II round. Show all posts
Showing posts with label Samsung interview Question in II round. Show all posts

Thursday, April 7, 2011

xml file tokenizing in c coding

//header files
# include "stdio.h"
# include "string.h"
# include "stdlib.h"

//FunctionDeclaration
int YourFunction(char**,char*,char*);

//Global variable
char *cPagexml = "<root><device><producer>Indian politician</producer><problem>barrier for india's growth </problem></device></root>";

int main()
{
//Variable Declaration
char *TagName = "producer";
char *xml = NULL;
char *Tagvalue = "public must react about it";

//Memory allocation
xml = (char *)calloc(1024,1);

//To copy the xml file
strcpy(xml,cPagexml);

printf("Fist Time : %s\n\n\n",xml);

//Call function
YourFunction(&xml,TagName,Tagvalue);


printf("After your function : %s\n\n\n\n",xml);

return 0;

}

/****************************** function definition ****************************************
User want to write this function to get the output


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

int YourFunction(char**xml,char*TagName,char*TagValue)
{
//Variable declartion
int nCount,nLoop;
int nTagValueLength;
int nLength;
char *cTempdata = (char *)calloc(1024,1);
char *cTemp = (char *)calloc(1024,1);
char *tempvalue=NULL;


// To move the pointer to producer
cTemp = strstr(*xml, TagName);

//To count the number of character pointer moved
nCount = (int)( cTemp - *xml);

// Cut the first ncount char from source
strncpy(cTempdata,*xml,nCount);

//to assign to other variable
nLoop = nCount;
// To reach the crrent position as tag
while(nLoop != 0)
{
nLoop--;
*cTempdata++;
}


// to reach the end of the tag name
while (*cTemp != '>')
{
// to assign in new pointer
*cTempdata++ = *cTemp++;
nCount++;
}
//for > symbol
*cTempdata++ = *cTemp++;
nCount++;

tempvalue = strstr(cTemp,TagName);
nTagValueLength = strlen(TagValue);
nLength = tempvalue - cTemp;
nLength -=2; //for </ symbols of end tag

if(nTagValueLength <= nLength)
{

while (*TagValue != '\0')
{
*cTempdata++ = *TagValue++;
*cTemp++;
++nCount;
}

nLength = (nLength-nTagValueLength);

while (nLength !=0)
{
nLength--;
*cTemp++;
}
}
else
{
while (*TagValue != '\0')
{
*cTempdata++ = *TagValue++;

++nCount;
}
while(nLength-- != 0)
*cTemp++;



}



while (*cTemp != '\0')
{

*cTempdata++ = *cTemp++;
nCount++;
}



// for reassigning the contents

nLoop = nCount;
while (nLoop--!= 0)
{
cTempdata--;
}

// To reassign the value to xml pointer
strcpy(*xml,cTempdata);


return 0;
}




OUTPUT:

Fist Time : <root><device><producer>Indian politician</producer><problem>barrier for india's growth </problem></device></root>


After your function : <root><device><producer>public must react about it</producer><problem>barrier for india's growth </problem></device></root>



Press any key to continue . . .





Indian Economy: Performance and Policies