梓益C语言学习笔记之常用字符串操作(sscanf & strtok)

一、sscanf

int sscanf(const char *buf,const char *format, …);  \\从buf指定的内存区域中读入信息

例: int a, b, c;

sscanf("2013:10:1", "%d:%d:%d", &a, &b, &c);

printf(“%d  %d  %d\n”,a,b,c);

sscanf()的正则表达式是从头向后顺序查找匹配字符,找不到就返回错误,如下面的几个例子:

char src[] = "[email protected]";//一个buf只对应一个%,%*可以用多次

sscanf(src, "%[A-Z]", buf);//buf=空,遇到A-Z以外的字符就停止,%表示选择,%后面的表示条件,条件s表示任意字符

sscanf(src, "%[^A-Z]", buf);//buf=abcdef,^表示取反,即遇到A-Z之间的字符就结束

sscanf(src, "%[^A]", buf);//buf=abcdef,从左向右获取除A以外的字符,直到A结果

sscanf(src, "%*[^A]", buf);//buf=空,*表示后面匹配的字符不保存([^A]本应该是abcdef,但因加了*所以没有了即过滤掉了)

sscanf(src, "%*[^A]%s", buf);//[email protected],s表示获取字符串,虽然前面没有保存字符,但后面的字符可以获得并保存

sscanf(src, "%*[^A]%[^@]", buf);//buf=ABCD123,直到遇到A并包含A结束

sscanf(src, "%*[^A]A%[^@]", buf);//buf=BCD123,直到遇到A但不包含A结束,A为定界符

二、strtok

char *strtok(char *str, const char *delim);

#include <stdio.h>

#include <string.h>

int main()

{

char str1[]="adc*fvcv*!ebcy!hghbdfg*casdert";

char *str2="*!";

char *result[10];

int num=0,i;

result[num]=strtok(str1,str2);

while(result[num]!=NULL)

{

num++;

result[num]=strtok(NULL,str2);

}

for(i=0;i<num;i++)

printf("result[%d]=%s\n",i,result[i]);

return 0;

}

原文地址:http://blog.51cto.com/13603157/2082837

时间: 2024-12-14 16:29:10

梓益C语言学习笔记之常用字符串操作(sscanf & strtok)的相关文章

梓益C语言学习笔记之常用链表操作函数

一.创建链表 void link_creat_head(STU **p_head,STU *p_new) { STU *p_mov=*p_head; if(*p_head==NULL) //当第一次加入链表为空时,head执行p_new { *p_head=p_new; p_new->next=NULL; } else //第二次及以后加入链表 { while(p_mov->next!=NULL) { p_mov=p_mov->next; //找到原有链表的最后一个节点 } p_mov-

梓益C语言学习笔记之结构体-共用体-枚举

有人说,我们需要将不同类型的数据组合成一个整体,于是,就有了结构体 一.结构体的概念: 一种或多种基本类型或构造类型的数据的集合. 二.定义方法: 先定义结构体类型,再去定义结构体变量 struct  结构体类型名{ 成员列表 }; 如: struct stu{ int num; char name[20]; char sex; }; struct stu  lucy,bob,lilei;//定义了三个struct stu类型的变量 每个变量都有三个成员,分别是num name  sex 通常咱

梓益C语言学习笔记之指针

一.32位平台下,地址是32位,所以指针变量占32位,共4个字节 二.内存单元的地址即为指针,存放指针的变量称为指针变量,故:"指针"是指地址,是常量,"指针变量"是取值为地址的变量. char*型指针一次取一个字节,int*型指针一次取4个字节,double*取两次4字节 数组名是指针,代表数组首元素的地址,但数组名是常量,不能修改. 三.通过指针变量可以取得数组或函数的首地址 int*p,表示p是一个指针变量,它的值是某个整型变量的地址 指针数组:int *a[

C语言基础 第九章 常用字符串操作函数

sscanf():可以将一个长的字符串按照需求分割成想要的格式 实例: #include<stdio.h> #include<string.h> int main() { //1. 取指定长度的字符串 char str[100]; sscanf("12345","%4s",str); printf("%s\n",str);//1234 //2. 格式化时间 int year, month, day, hour, minut

Perl语言学习笔记 6 哈希

1.哈希的键是唯一的,值可以重复! 2.访问哈希元素 $hashname{"$key"};#哈希为大括号,数组为方括号,键为字符串 $family_name{"fred"} = "firstd";#给哈希元素赋值 3.哈希键支持任意表达式 $foo = "na"; $family_name{$foo."me"};#获取$family_name{"name"}对应的值 4.访问整个哈希 %

python 学习笔记 13 -- 常用的时间模块之time

Python 没有包含对应日期和时间的内置类型,不过提供了3个相应的模块,可以采用多种表示管理日期和时间值: *    time 模块由底层C库提供与时间相关的函数.它包含一些函数用于获取时钟时间和处理器的运行时间,还提供了基本解析和字符串格式化工具 *    datetime 模块为日期.时间以及日期时间值提供一个更高层接口.datetime 中的类支持算术.比较和时区配置. *    calendar 模块可以创建周.月和年的格式化表示.它还可以用来计算重复事件.给定日期是星期几,以及其他基

go语言学习笔记

go语言学习笔记 go语言学习笔记(初级) 最近一直在学习go语言,因此打算学习的时候能够记录 一下笔记.我这个人之前是从来没有记录笔记的习惯, 一直以来都是靠强大的记忆力去把一些要点记住. 读书的时候因为一直都是有一个很安静和很专心的环境, 因此很多事情都能记得很清楚,思考的很透彻.但是随着 年纪不断增加,也算是经历了很多的事情,加上工作有时会让人 特别烦闷,很难把心好好静下来去学习,去思考大自然的终极 奥秘,因此需要记录一些东西,这些东西一方面可以作为一种自我激励 的机制,另一方面,也算是自

Perl语言学习笔记 9 正则表达式处理文本

1.替换 s/PATTERN/REPLACE/; #返回是否替换成功的布尔值 可以使用捕获变量,如:s/(\w)/$1/ 匹配失败则不做任何处理 2.定界符 对于没有左右之分的定界符,重复三次即可,如:s///.s### 对于有左右之分的定界符,需使用两对,一对包含模式,一对包含替换字符串,这两对可以不一样,如:s{}{}.s[]{}.s<>[] 3.可选修饰符 /g可进行全局替换,替换所有匹配到的字符串,如:s/ / /g /s:使得 . 匹配所有字符 /i:大小写无关 4.绑定操作符 $f

JavaScript--基于对象的脚本语言学习笔记(二)

第二部分:DOM编程 1.文档象模型(DOM)提供了访问结构化文档的一种方式,很多语言自己的DOM解析器. DOM解析器就是完成结构化文档和DOM树之间的转换关系. DOM解析器解析结构化文档:将磁盘上的结构化文档转换成内存中的DOM树 从DOM树输出结构化文档:将内存中的DOM树转换成磁盘上的结构化文档 2.DOM模型扩展了HTML元素,为几乎所有的HTML元素都新增了innerHTML属性,该属性代表该元素的"内容",即返回的某个元素的开始标签.结束标签之间的字符串内容(不包含其它