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!
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; } Using the library function strtok(): 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; } Call either like this: Code: char oIPnPort[] = "111.123.123.123:5000"; char oIP[30]; char oPort[10]; split_addr (oIPnPort, oIP, oPort);