C 语言字符串分割函数
时间:2022-04-27
本文章向大家介绍C 语言字符串分割函数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
strtok() 函数实现字符串分割
实例代码:
#include <stdio.h>
#include <string.h>
int main(int argc, char ** argv)
{
char test[] = "hello world c!!";
char ch[] = " ";
char * ptr = strtok(test, ch); // 实现字符串的分割
while(ptr != NULL)
{
printf("%sn", ptr);
ptr = strtok(NULL, ch);
}
return 0;
}
例子:
int is_comment(char * content)
{
int i = 0;
int len = strlen(content);
while(i < len && isspace(content[i]) != 0)
{
++i;
}
if(i >= len || content[i] == '#') // empty line or comment line
return 0;
else
return 1;
}
int open(FILE ** f)
{
char *filename = "key.conf";
if((*f = fopen(filename, "rw")) == NULL)
{
// no such file
return ENOENT;
}
else
{
return 0;
}
}
int close(FILE **f)
{
return fclose(*f);
}
int read_id(FILE *f)
{
char content[MAX_LENGTH];
char *id = NULL;
while(!feof(f))
{
fgets(content, MAX_LENGTH, f);
content[strlen(content) - 2] =' ';
if(0 != is_comment(content))
{
id = strtok(content, " ");
if(id != NULL)
{
printf("%sn", id);
}
else
return -1;
}
}
return 0;
}
int read_key(FILE *f)
{
char content[MAX_LENGTH];
char *key;
while(!feof(f))
{
fgets(content, MAX_LENGTH, f);
content[strlen(content) - 2] =' ';
if(0 != is_comment(content))
{
key = strtok(content, " ");
if(key != NULL)
{
key = strtok(NULL, " ");
if(key != NULL)
{
printf("%sn", key);
}
else
return -1;
}
else
return -1;
}
}
return 0;
}
int read_uuid(FILE *f)
{
char content[MAX_LENGTH];
char *uuid;
while(!feof(f))
{
fgets(content, MAX_LENGTH, f);
content[strlen(content) - 2] =' ';
if(0 != is_comment(content))
{
uuid = strtok(content, " ");
if(uuid != NULL)
{
uuid = strtok(NULL, " ");
if(uuid != NULL)
{
uuid = strtok(NULL, " ");
if(uuid != NULL)
{
printf("%sn", uuid);
}
}
else
return -1;
}
else
return -1;
}
}
return 0;
}
int main(int argc, char ** argv)
{
FILE *f = NULL;
open(&f);
//printf("space = %dn", isspace(' '));
read_id(f);
fseek(f,0,0);
read_key(f);
fseek(f,0,0);
read_uuid(f);
close(&f);
return 0;
}
key.conf结构:
## comment: start with '#'
## style: plain text
## format: <unique-identifier> <encrypted-key> [uuid,...]
## uuid has upper limit for one key, the upper limit is 10
10000001 asdfgh123456i719 550E8400-E29B-11D4-A716-446655440000
10000002 asdfgh123456i710
10000003 asdfgh123456i711 550E8400-E29B-11D4-A716-44665544asdf
10000004 asdfgh123456i712
10000005 asdfgh123456i713 550E8400-E29B-11D4-A716-44665544asdf,550E8400-E29B-11D4-A716-446655440987
# end
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Angular依赖注入的一个例子和注入原理单步调试
- Angular依赖注入的一个常见错误NullInjectorError,No provider for XXX
- Redis系列(十二)scan Info Object等特殊命令集合
- 使用纯CSS给网站文章中的外链添加小图标
- iOS美团同款"ZSource"二进制调试实现
- 使用picocm来进行Linux下的串口调试
- vue-drawer-layout实现手势滑出菜单栏
- iOS面试之UI大全
- 基于Ant Design Vue封装一个表单控件
- Rust闭包的虫洞穿梭
- TS 设计模式08 - 发布订阅模式
- GrowingIO 数据采集 iOS SDK 测试实践
- Kubernetes 1.19.0——Pod(2)
- 极速40分钟写出SQLite数据展示与导出功能【技术创作101训练营】
- opencv cudacodec VideoReader 报错