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
- struts2 DMI
- 翻译qmake文档(四) Building Common Project Types
- 翻译qmake文档(三) Creating Project Files
- 翻译qmake文档(二) Getting Started
- QTableView 添加按钮
- QTableView 添加进度条
- c# 调用win32模拟点击的两种方法
- [原创翻译]Protocol Buffer Basics: C#
- 详解 Android Activity 生命周期
- 设计模式:装饰者模式
- 详解 常量指针和指针常量
- python 列表 总结
- 详解c++指针的指针和指针的引用
- QTableView 一列添加两个按钮
- 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 数组属性和方法
- android canvas使用line画半圆
- 说说Android的UI刷新机制的实现
- Android仿直播类app赠送礼物功能
- android自定义imageview实现圆角图片
- 基于android实现五子棋开发
- Android Fragment的静态注册和动态注册创建步骤
- Android从Fragment跳转到其他Activity的简单实例
- Android7.0以上Uri转路径的方法实现(已验证)
- Android studio实现简单计算器
- Android 自定义LayoutManager实现花式表格
- android studio编译jar包或者aar包的方法教程详解
- Android实现屏幕录制功能
- Android实现扫描二维码功能
- android实现录屏功能
- android自定义手表效果