It looks like you're new here. If you want to get involved, click one of these buttons!
Lakshit
Member
In C, I'm attempting to tokenize a string using strtok. I use strtok since the string includes several delimiters, however, it fails to tokenize the strings if they contain white space.
String to tokenize: Name:Mustafa Baki /Phone:123456789 /Note:real
char *name = strtok(line," /");
char *phone = strtok(NULL, " /");
char *note1 = strtok(NULL," /");
//tokenize name
name = strtok(name, ":");
name = strtok(NULL, ":");
//tokenize phone number
phone = strtok(phone, ":");
phone = strtok(NULL, ":");
//tokenize note
note1 = strtok(note1, ":");
note1 = strtok(NULL, ":");
printf("Name: %s Phone: %s Note: %s \n",name,phone,note1);
Mustafa is the name I got. Phone: (null) (null) Take note of 123456789 when it is printed.
Everything is ruined since the name has white space. As you can see, it just skips the phone number and assigns it to the note.
How do I make that right? Is it feasible to take the string as complete as given in this blog after the delimiter, for example, Name:Mustafa Baki, and tokenize it? Can I take Mustafa Baki in its whole after:? Is concatenation or anything required?