轉自:http://blog.csdn.net/ast_224/article/details/3977311
strtok:
#include <string.h>
char *strtok(char *str, const char *delim);
char *strtok_r(char *str, const char *delim, char **saveptr);
功能:分解字串為一組標記串。str為要分解的字串,delim為分隔字元字串。
說明:首次調用時,str必須指向要分解的字串,隨後調用要把s設成NULL。
strtok在str中尋找包含在delim中的字元並用NULL('/0')來替換,直到找遍整個字串。
返回指向下一個標記串。當沒有標記串時則返回Null 字元NULL。
執行個體:用strtok來判斷ip地址是否合法:ip_strtok.c:
[c-sharp] view plain copy //ip_strtok.c #include <stdio.h> #include <string.h> int main(int argc, char **argv) { char temp_buf[100] = {}; char p_temp[100]; char *p=NULL; char *t = "."; int m,n,i; int j=0,s=0; if(argc!=2) { printf("param must 2/n"); return -1; } strcpy(temp_buf, argv[1]); for(i=0; i<strlen(temp_buf);i++) { if(temp_buf[i] == *t)j++; if(temp_buf[i] == *t && (temp_buf[i+1]>='0'&&temp_buf[i+1]<='9')) { s++; } } if(j!=3 || j!=s) { printf("ip param format error/n"); return -1; } p = strtok(temp_buf, t); while(p!=NULL) { strcpy(p_temp, p); printf("%s /n", p_temp); for(n=0; n<strlen(p_temp);n++) { if(!(p_temp[n]>='0'&&p_temp[n]<='9')) { printf("ip param error/n"); return -1; } } m = atoi(p_temp); if(m>255) { printf("ip invalid /n"); return -1; } p=strtok(NULL, "."); printf("p = %s/n",p); } printf("ok