Microsoft Interview Question
Software Engineer / Developers#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="198.160.9.10";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str,".");
while (pch != NULL)
{
printf ("%s\n",pch);
int l=strlen(pch);
int i=0,num=0;
while(i<l){
num*=10;
num+=pch[i++]-'0';
}
pch = strtok (NULL, ".");
printf("\nint value is :%d\n",num);
}
return 0;
}
Please comment!!
<pre lang="c" line="1" title="CodeMonkey1286" class="run-this"> void TokenizeIpAddressToIntegers(char* address)
{
int begin = 0, end = 0;
while(address[end])
{
if(address[end] == '.')
{
PrintInt(address, begin, end);
end++;
begin = end;
}
else
{
end++;
}
}
PrintInt(address, begin, end);
}
void PrintInt(char *address, int begin, int end)
{
int num = 0;
int length = end - begin;
while(length > 0)
{
int digit = address[begin] - 48;
num = num + digit * pow(10.0, (length-1));
length--;
begin++;
}
printf("%d\n", num);
}
int main()
{
char *address = "192.168.20.002";
TokenizeIpAddressToIntegers(address);
}</pre>
<pre lang="c" line="1" title="CodeMonkey24878" class="run-this"> void TokenizeIpAddressToIntegers(char* address)
{
int begin = 0, end = 0;
while(address[end])
{
if(address[end] == '.')
{
PrintInt(address, begin, end);
end++;
begin = end;
}
else
{
end++;
}
}
PrintInt(address, begin, end);
}
void PrintInt(char *address, int begin, int end)
{
int num = 0;
int length = end - begin;
while(length > 0)
{
int digit = address[begin] - 48;
num = num + digit * pow(10.0, (length-1));
length--;
begin++;
}
printf("%d\n", num);
}
int main()
{
char *address = "192.168.20.002";
TokenizeIpAddressToIntegers(address);
}</pre>
- Anonymous April 03, 2010