温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-07-29 16:43:35 来源:网络 阅读:753 作者:Czyy1 栏目:编程语言

梓益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[] = "abcdefABCD123@456EFGghi";//一个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);//buf=ABCD123@456EFGghi,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;

}


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI