Greetings,
I am making an update to a ESQLC program that is using topend to communicate with Windows..
I have been having a problem separating a string.
I have column on a table that holds the address of a printer in the following format. 111.111.111.111:4000
Its not always guaranteed to be that length.
I pull that list back via FETCh into.... but NOW i want to split it into two different variables. One with the IP and the other with the Port.
so char oIPnPort[] = "111.123.123.123:5000";
would be split up and copied into two separate variables
char oIP[] = "111.1223.123.123";
char oPort[] = "5000";
Could someone give me an example of how to do this via C???
Use of pointers or anything else would be ok... just need help...
This split would remove the : between the port and IP as well... I know I want to copy whats to the right of the : in one variable"port" and whats to the left of the : in IP.
THANKS!
|
Ambitious contributor
|
|
| 20Oct2008,07:03 | #2 |
|
Low-level:
Code:
void split_addr (char *ip_port, char *ip, char *port)
{
while (*ip_port && *ip_port != ':')
*ip++ = *ip_port++;
*ip = 0;
if (*ip_port++) // if not pointing at null char
while (*ip_port)
*port++ = *ip_port++;
*port = 0;
}
Code:
#include <string.h>
void split_addr (char *ip_port, char *ip, char *port)
{
char *p;
p = strtok (ip_port, ":");
strcpy (ip, p);
p = strtok (NULL, "");
if (p) strcpy (port, p);
else *port = 0;
}
Code:
char oIPnPort[] = "111.123.123.123:5000"; char oIP[30]; char oPort[10]; split_addr (oIPnPort, oIP, oPort);
wgre0111
likes this
|
