码迷,mamicode.com
首页 > 其他好文 > 详细

strtok的用法(文件操作)

时间:2015-02-06 20:22:16      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

strtok :在一个字符串查找下一个符号

char *strtok( char *strToken, const char *strDelimit );

返回值:返回指向在strToken字符串找到的下一个符号的指针,当在字符串找不到符号时,将返回NULL.每

次调用都通过用NULL字符替代在strToken字符串遇到的分隔符来修改strToken字符串.

如果strtok函数第一个参数不是NULL,函数将找到字符串的第一个标记。strtok同时保存它在字符串中的位置。如果第一个参数是NULL,函数就在同一个字符串中从这个被保存的位置开始像前面一样查找下一个标记。字符串不存在更多的标记,则返回NULL; 

 char *array[32];
 int index = 0;
#if 0
 array[index] = strtok(buf, " ");
 while(array[index] != NULL){
  printf("%s\n", array[index]);
  index ++;
  array[index] = strtok(NULL, " ");
 }
#else
 for(array[index] = strtok(buf, " "); array[index] != NULL; index++,   array[index] = strtok(NULL, " "))
  printf("%s\n", array[index]);
#endif

以下是实际应用中的一段代码:

 1 /*read file*/
 2 msg_t *read_t()
 3 {
 4     int i = 0;
 5     int j = 0;
 6     char* a[128];
 7     char* result = NULL;
 8     char buf[128],tmp[128];
 9     FILE *fp;
10     char delims[] = " ";
11     memset(a,0,128);
12    // msg_t * msg = NULL;
13  
14     if((fp = fopen("./c.txt","r"))== NULL)
15     {
16   perror("fopen");
17     }
18  
19     while(fgets(buf,1024,fp) != NULL)//读取文件
20     {
21         printf("%s",buf);
22         a[i] = strtok(buf,delims);
23         while(a[i] != NULL) {//进行切割
24             printf("%s\n",a[i]);
25             i++;
26             a[i] = strtok(NULL,delims);
27         }
28 #if DEBUG
29         msg[j].type = *(a[0]);
30         strcpy(msg[j].name,a[1]);
31         strcpy(msg[j].pass,a[2]);
32         msg[j].age = atoi(a[3]);
33         strcpy(msg[j].sex,a[4]);
34         msg[j].salary = atoi(a[5]);
35         memset(a,0,128);
36         j++;
37         i = 0;
38         msg[j].type = #;
39 #endif
40     }
41     fclose(fp);
42     return msg;
43 }
44 /*write file*/
45 int write_t(msg_t *msg) {
46    
47     int i = 0;
48     int j = 0;
49     char* a[128];
50     char* result = NULL;
51     char buf[128],tmp[128];
52     FILE *fp;
53     char delims[] = " ";
54     memset(a,0,128);
55 #if DEBUG
56        while(msg->type != #){
57     printf("%c\t",msg->type);
58     printf("%s\t",msg->name);
59     printf("%s\t",msg->pass);
60     printf("%5d\t",msg->age);
61     printf("%s\t",msg->sex);
62     printf("%5d\n",msg->salary);
63       msg++;
64        }
65 #endif
66   
67     if((fp = fopen("./a.txt","a")) == NULL){
68         return -1;
69     }
70     memset(buf,0,128);
71     sprintf(buf,"%c %s %s %d %s %d\n",msg->type,msg->name,msg->pass,
72         msg->age,msg->sex,msg->salary);//字符串拼写
73     fwrite(buf,sizeof(buf),1,fp);//写入文件
74     fclose(fp);
75 
76     return 0;
77 }

 

strtok的用法(文件操作)

标签:

原文地址:http://www.cnblogs.com/youthshouting/p/4277910.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!