strtok用法详解
生活随笔
收集整理的這篇文章主要介紹了
strtok用法详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
字符串操作函數strtok用法:
char* strtok(char* src,char* split);
函數參數:
src:被分割的字符串
split:分割的標志,分割字符串
函數返回值:
成功:返回被分割出的字符串
失敗:NULL
分割字符串后原串src變成第一次分割成功后分割出的字符串。
(1)首次分割 : char* p = strtok(src,split);
(2)往后繼續分割:
char* p1 = strtok(NULL,split);
char* p2 = strtok(NULL,split);
…
在完整功能中的用法實例
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #define INFO_SIZE 128 char* getText(char *src) {if(!src){return NULL;}/*strtok用法如下:*/char *p = strtok(src,"=");p = strtok(NULL,"=");return p; }int main() {FILE* fp = NULL;fp = fopen("1.txt","r");if(!fp){return -1;}char* p = NULL;char recv[INFO_SIZE] = {0};char data[20] = {0};char *name = NULL;char *age = NULL;char *phone = NULL;char recv_next[INFO_SIZE] = {0};printf("please input :\n");fgets(data,INFO_SIZE,stdin);data[strlen(data) - 1] = '\0';if(strstr(data,"name") != NULL){p = getText(data);if(!p){return -1;}printf("p = %s\n",p);while(fgets(recv,INFO_SIZE,fp) != NULL && recv[0] != '\n'){if(strncmp(recv,p,strlen(p)) == 0 && recv[strlen(p)] == ','){name = strtok(recv,",");age = strtok(NULL,",");phone = strtok(NULL,",");printf("recv = %s\n",recv);printf("output:age = %s,phone = %s\n",age,phone);}memset(recv,0,INFO_SIZE);}}else if(strstr(data,"age") != NULL){p = getText(data);if(!p){return -1;}while(fgets(recv,INFO_SIZE,fp) != NULL && recv[0]!='\n'){strcpy(recv_next,recv);name = strtok(recv_next,",");age = strtok(NULL,",");phone = strtok(NULL,",");if(strncmp(age,p,strlen(p)) == 0 && recv[strlen(name) + 1 + strlen(age)] == ','){//if(strncmp(age,p,strlen(p)) == 0)//{name = strtok(recv,",");age = strtok(NULL,",");phone = strtok(NULL,",");printf("output : name = %s,phone = %s\n",age,phone);}memset(recv,0,INFO_SIZE);memset(recv_next,0,INFO_SIZE);} }else{return -1;}fclose(fp);return 0;} 總結
以上是生活随笔為你收集整理的strtok用法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做设计常用的素材下载网站
- 下一篇: 计算机考研2021算法真题,2021年清