strtok
char *strtok(char *str, const char *sep);
Example:
char *token;
char *path = getenv("PATH");
/* PATH is something like "/usr/bin:/bin/usr/sbin:/sbin" */
char *copy = (char *)malloc(strlen(path) + 1);
if (copy == NULL) {
/* handle error */
}
strcpy(copy, path);
token = strtok(copy, ":");
puts(token);
while (token = strtok(0, ":")) {
puts(token);
}
free(copy);
copy = NULL;
printf("PATH: %s", path);
/* PATH is still "/usr/bin:/bin/usr/sbin:/sbin" */
备注:
strtok() 会修改传递给它的第一个参数的内容,因此这个字符串在调用以后将是不安全的,无法按照原先的方式使用。如果需要保留原先的字符串,可以把它复制到一个缓冲区,并把这个缓冲区的地址传递给 strtok(),而不是传递原字符串。