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. BZOJ3165 & 洛谷4097:[HEOI2013]Segment——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=3165 https://www.luogu.org/problemnew/show/P4097 要求 ...

  2. 洛谷 P1969 积木大赛 解题报告

    P1969 积木大赛 题目描述 春春幼儿园举办了一年一度的"积木大赛".今年比赛的内容是搭建一座宽度为\(n\)的大厦,大厦可以看成由\(n\)块宽度为1的积木组成,第\(i\)块 ...

  3. mybaties实体的 Mapper.xml文件中自定义sql时模糊查询的写法

    <select  id=selectByNameLike" parameterType="string" resultMap="BaseResultMap ...

  4. HDU4081:Qin Shi Huang's National Road System (任意两点间的最小瓶颈路)

    Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/3 ...

  5. DIV CSS display(block,inline,none)的属性教程

    display:inline.block.inline-block的区别 display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都 ...

  6. [洛谷P2571] [SCOI2010]传送带

    题目描述 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxh ...

  7. Gradle加载本地jar包

    有时,我们需要的jar包不一定能在远程仓库中找到,这时我们需要加载本地的jar包. 加载单独的jar包 在项目底下添加libs目录,将jar包仍进libs目录 build.gradle配置如下: de ...

  8. bzoj3671 [Noi2014]随机数生成器

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3671 [题解] 贪心从1...n*m取,开两个5000*5000的数组就够了,可以重复利用, ...

  9. webpack4.x 入门一篇足矣

    前言: webpack4出了以后,一些插件变化很大,和之前的版本使用方式不一样,新手入坑,本篇将介绍如何从一开始配置webpack4的开发版本,对css,js进行编译打包合并生成md5,CSS中的图片 ...

  10. C# 文件操作常用方法总结

    需引用 System.IO Path为绝对路径 检测指定目录是否存在 Directory.Exists(Path) 创建目录 Directory.CreateDirectory(Path) 删除目录 ...