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

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

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

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

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

 ];
 ;
#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

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

 /*read file*/
 msg_t *read_t()
 {
     ;
     ;
     ];
     char* result = NULL;
     ],tmp[];
     FILE *fp;
     char delims[] = " ";
     memset(a,,);
    // msg_t * msg = NULL;

     if((fp = fopen("./c.txt","r"))== NULL)
     {
   perror("fopen");
     }

     ,fp) != NULL)//读取文件
     {
         printf("%s",buf);
         a[i] = strtok(buf,delims);
         while(a[i] != NULL) {//进行切割
             printf("%s\n",a[i]);
             i++;
             a[i] = strtok(NULL,delims);
         }
 #if DEBUG
         msg[j].type = *(a[]);
         strcpy(msg[j].name,a[]);
         strcpy(msg[j].pass,a[]);
         msg[j].age = atoi(a[]);
         strcpy(msg[j].sex,a[]);
         msg[j].salary = atoi(a[]);
         memset(a,,);
         j++;
         i = ;
         msg[j].type = '#';
 #endif
     }
     fclose(fp);
     return msg;
 }
 /*write file*/
 int write_t(msg_t *msg) {

     ;
     ;
     ];
     char* result = NULL;
     ],tmp[];
     FILE *fp;
     char delims[] = " ";
     memset(a,,);
 #if DEBUG
        while(msg->type != '#'){
     printf("%c\t",msg->type);
     printf("%s\t",msg->name);
     printf("%s\t",msg->pass);
     printf("%5d\t",msg->age);
     printf("%s\t",msg->sex);
     printf("%5d\n",msg->salary);
       msg++;
        }
 #endif

     if((fp = fopen("./a.txt","a")) == NULL){
         ;
     }
     memset(buf,,);
     sprintf(buf,"%c %s %s %d %s %d\n",msg->type,msg->name,msg->pass,
         msg->age,msg->sex,msg->salary);//字符串拼写
     fwrite(buf,,fp);//写入文件
     fclose(fp);

     ;
 }

strtok的用法(文件操作)的更多相关文章

  1. Python3中IO文件操作的常见用法

    首先创建一个文件操作对象: f = open(file, mode, encoding) file指定文件的路径,可以是绝对路径,也可以是相对路径 文件的常见mode: mode = “r”   # ...

  2. [python]打开文件操作open用法

    1. 格式 handle = open(file_name, access_mode = 'r') file_name: 希望打开的文件名 access_mode: 'r'表示读取,'w'表示写入,' ...

  3. 强大的pdf文件操作小工具——PDFtk的小白用法 【转载】

    转载出处https://www.cnblogs.com/basterdaidai/p/6204518.html 前言 作为程序员,大家都知道的,总是会被技术小白问各种跟编程没什么关系的硬件.软件问题. ...

  4. Python之路第一课Day3--随堂笔记(文件操作)

    一.集合的介绍 1.集合操作 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 常用操作 s = se ...

  5. 003-Tuple、Array、Map与文件操作入门实战

    003-Tuple.Array.Map与文件操作入门实战 Tuple 各个元素可以类型不同 注意索引的方式 下标从1开始 灵活 Array 注意for循环的until用法 数组的索引方式 上面的for ...

  6. C的文件操作2

    [转] C语言文件操作  概述 所谓文件(file)一般指存储在外部介质上数据的集合,比如我们经常使用的mp3.mp4.txt.bmp.jpg.exe.rmvb等等.这些文件各有各的用途,我们通常将它 ...

  7. (Python )格式化输出、文件操作、json

    本节学习Python的格式化输出,文件操作以及json的简单用法 1.格式化输出 将非字符串类型转换成字符串,可以使用函数:str() 或者repr() ,(这两个函数的区别目前我还没搞懂,求解答) ...

  8. Python :open文件操作,配合read()使用!

    python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...

  9. python学习笔记-(七)python基础--集合、文件操作&函数

    本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...

随机推荐

  1. CentOS 文件特殊权限SUID,SGID,SBIT

    1.SUID ,是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的二进制程序有效). (1)SUID权限仅对二进制程序有效: (2)本权限仅在执行该 ...

  2. syslog服务器配置笔记

    syslog服务器可以用作一个网络中的日志监控中心,rsyslog是一个开源工具,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息.本文我们来讲讲在 Linux 上配置一个 sysl ...

  3. 专题训练之2-sat

    推荐几篇博客:https://blog.csdn.net/JarjingX/article/details/8521690 研究总结2-sat问题 https://blog.csdn.net/wher ...

  4. Pycharm中一些不为人知的技巧

    工欲善其事必先利其器,Pycharm 是最受欢迎的Python开发工具,它提供的功能非常强大,是构建大型项目的理想工具之一,如果能挖掘出里面实用技巧,能带来事半功倍的效果. 以下操作都是基于 Wind ...

  5. 【简单算法】40.Fizz Buzz

    题目: 写一个程序,输出从 到 n 数字的字符串表示. . 如果 n 是3的倍数,输出“Fizz”: . 如果 n 是5的倍数,输出“Buzz”: .如果 n 同时是3和5的倍数,输出 “FizzBu ...

  6. C++派生类继承的理解

    #include<iostream> using namespace std; class Base{ public: Base() { a=; cout<<"Bas ...

  7. 分析一个贴图社交app的失败原因:FORK(相机)

    FORK(相机)是一个通过分享图片来建立社交的app,它有着鲜明的配色,还算不错的贴图创新,细腻的产品设计,但是由于产品定位不清晰.设计亮点不多以及推广不利,从2014年5月第一版开始就没有火过.所以 ...

  8. SDRAM初始化

    DDR配置过程比较复杂,基本上是按照DDR控制器的时序要求来做的,其中很多参数要结合DDR芯片本身的参数来定,还有些参数是时序参数,要去详细计算.所以DDR配置非常繁琐.细致.专业.所以我们对DDR初 ...

  9. [Jenkins 新插件] 兼容阿里开发手册 (P3C) 的火线插件安装使用教程

    一.前言 火线(Fireline)的Jenkins官方插件已经上线,目前火线不仅能检查出安卓代码中的安全类问题和内存泄露问题,还兼容了阿里开源的Java开发规约(P3C项目),本文将以教程的形式帮助大 ...

  10. (转)Django发送html邮件

    本文转自http://blog.csdn.net/yima1006/article/details/8991145 send_mail(subject, message, from_email, re ...