C语言 sscanf,c语言中sscanf是什么意思

C语言 sscanf,c语言中sscanf是什么意思,C语言中的sscanf()函数使用详解

本文主要介绍了C语言中sscanf()函数使用的详细说明,并增加了一个相关的ACM主题对其进行补充和巩固。有需要的朋友可以参考一下。

SSCCF()-从字符串中读取指定格式的数据。

功能原型:

Int sscanf( string str,string fmt,mixed var1,mixed var2.);

int scanf( const char *format [,argument].);

描述:

Sscanf类似于scanf,用于输入,只不过后者使用screen (stdin)作为输入源,而前者使用固定字符串作为输入源。

其中格式可以是一个或多个{ %[*][width][{ h | l | i64 | l }]type | ' | ' \ t ' | ' \ n ' | non-% symbol }

注意:

1.*也可用于格式中,即%*d和%*s),带星号(*)表示跳过此数据,不读入(即不将此数据读入参数)

2.{a|b|c}表示A、B、C中的一个,【d】表示可能有也可能没有d。

3.宽度表示阅读宽度。

4.{h | l | I64 | L}:参数的大小。通常,H表示单字节大小,I表示2字节大小,L表示4字节大小(双异常),l64表示8字节大小。

5.类型:那很多,就是%s,%d之类的。

6.特殊:%*[width] [{h | l | I64 | L}]type表示满足这个条件的会被过滤掉,不会有值写入目标参数。

支持收集操作:

%[a-z]表示匹配从A到Z的任意字符,greed(尽可能多的匹配)

%[aB']匹配A、B '、贪婪中的一个

% [a]匹配除a以外的任何字符,贪婪

格式

{ %[*][width][{ h | l | l64 | l }]type | ' ' | t ' | \ n ' | not % symbol }

注意:

*可在格式中使用,(即%*d和%*s)标有星号(*),表示该数据被跳过且不被读入。(也就是说,数据不会读入参数)

宽度表示阅读宽度。

{h | l | l64 | L}:参数size,通常H代表单字节大小,L代表2字节大小,L代表4字节大小,l64代表8字节大小。

类型参数类型,例如%s,%d

支持正则表达式,比如%[a-z]匹配A到Z的任意字符(ps:正则表达式这个假期我会写一篇博客记录)

参考用例

#包含stdio.h

#包含stdlib.h

#包含字符串. h

int main()

{

int结果;

字符串[100];

char buf1[255],buf2[255],buf3[255],buf 4[255];

//基本用法

memset(str,0,sizeof(str));

strcpy(str,'我爱中国!');

result=sscanf(str,' %s %s %s ',buf1,buf2,buf 3);

printf('%d\n%s\n%s\n%s\n ',result,buf1,buf2,buf 3);

/**

*实施结果:

* 3

*我

*爱情

*中国!

*可以看出,sscanf的返回值是读取的参数个数。

*/

//读取指定长度的字符串

memset(str,0,sizeof(str));

strcpy(str,' abcdefghijklmnopq ');

sscanf(str,' %5s ',buf 4);

printf('%s\n ',buf 4);

/**

*实施结果:

* abcde

*/

//常规匹配字符串

memset(str,0,sizeof(str));

memset(buf1,0,sizeof(buf 1));

memset(buf2,0,sizeof(buf 2));

memset(buf3,0,sizeof(buf 3));

strcpy(str,' 123456 abcdedfandfs ');

sscanf(str,' %[0-9]%[a-z]%[A-Z]',buf1,buf2,buf 3);

printf('%s\n%s\n%s\n ',buf1,buf2,buf 3);

/**

*实施结果:

* 123456

* abcdedf

*和FS

*很难相信C语言其实是支持正则化的,只是C支持的正则化比较弱。

*/

返回0;

}

九度ac话题

标题描述

标题描述:

有一个记录网络中计算任务执行情况的网络日志。每个计算任务对应于以下形式的日志记录:

“hs_10000_p”是计算任务的名称,

“2007-01-17 19:22:53,315”是计算任务开始执行的时间“YYY-MM-DD: min: sec,ms”

“253.035(s)”是计算任务消耗的时间(秒)。

hs _ 10000 _ p 2007-01-17 19:22:53315253.035(s)

请编写一个程序,对日志中记录的计算任务进行排序。

消耗时间少的计算任务排第一,消耗时间多的计算任务排第二。

如果两个计算任务花费的时间相同,则执行时间较早的计算任务将排在第一位。

输入:

日志中每个记录是一个字符串,每个字符串占一行。最后一行为空行,表示日志结束。日志中最多可能有10000条记录。

计算任务名称的长度不超过10,开始执行时间的格式是YYYY-MM-DD HH:MM:SS,嗯,消耗时间小数点后有三位数字。

计算任务名称与任务开始时间、消耗时间之间以一个或多个空格隔开,行首和行尾可能有多余的空格。

输出:

排序好的日志记录。每个记录的字符串各占一行。

输入的格式与输入保持一致,输入包括几个空格,你的输出中也应该包含同样多的空格。

样例输入:

hs _ 10000 _ p 2007-01-17 19:22:53315253.035(s)

hs_10001_p 2007-01-17 19:22:53,315 253.846(s)

hs_10002_m 2007-01-17 19:22:53,315 129.574(s)

hs_10002_p 2007-01-17 19:22:53,315 262.531(s)

hs_10003_m 2007-01-17 19:22:53,318 126.622(s)

hs _ 10003 _ p 2007-01-17 19:22:53318136.962(s)

hs_10005_m 2007-01-17 19:22:53,318 130.487(s)

hs_10005_p 2007-01-17 19:22:53,318 253.035(s)

hs_10006_m 2007-01-17 19:22:53,318 248.548(s)

hs _ 10006 _ p 2007-01-17 19:25:233673146.827(s)

样例输出:

hs_10003_m 2007-01-17 19:22:53,318 126.622(s)

hs_10002_m 2007-01-17 19:22:53,315 129.574(s)

hs_10005_m 2007-01-17 19:22:53,318 130.487(s)

hs _ 10003 _ p 2007-01-17 19:22:53318136.962(s)

hs_10006_m 2007-01-17 19:22:53,318 248.548(s)

hs _ 10000 _ p 2007-01-17 19:22:53315253.035(s)

hs_10005_p 2007-01-17 19:22:53,318 253.035(s)

hs_10001_p 2007-01-17 19:22:53,315 253.846(s)

hs_10002_p 2007-01-17 19:22:53,315 262.531(s)

hs _ 10006 _ p 2007-01-17 19:25:233673146.827(s)

交流电代码

#包含标准视频

#包含标准库

#包含字符串。h

结构任务

{

字符串[200];

char name[20];

(同Internationalorganizations)国际组织年、月、日、小时、分钟、秒、微;

双倍运行时间;

};

int compare(const void *p,const void * q);

int main()

{

结构任务管理信息系统[10001];

int i,n=0;

memset(mis,0,sizeof(mis));

当(得到(小姐)时.str))

{

if(strcmp(mis[n]).str,' ')==0)

{

打破;

}

sscanf(mis[n].字符串,' %s%d-%d-%d %d:%d:%d,%d %lf ',缺少[n]的缩写.姓名,小姐。年,小姐。月份,小姐。天,小姐。小时,小姐。分钟,小姐。第二小姐,小姐.微,密斯[n]的缩写.运行时);

n;

}

qsort(mis,n,sizeof(mis[0]),compare);

for(I=0;I n;我)

{

printf('%s\n ',mis[i].str);

}

返回0;

}

int compare(const void *p,const void *q)

{

const struct mission * a=p;

const struct mission * b=q;

如果(一个-运行时b-运行时)

{

返回1;

} else if(a-runtime==b-runtime a-year b-year)

{

返回1;

} else if(a-runtime==b-runtime a-year==b-year a-month b-month)

{

返回1;

} else if(a-runtime==b-runtime a-year==b-year a-month==b-month a-day b-day)

{

返回1;

} else if(a-runtime==b-runtime a-year==b-year a-month==b-month a-day==b-day a-hour b-hour)

{

返回1;

} else if(a-runtime==b-runtime a-year==b-year a-month==b-month a-day==b-day a-hour==b-hour a-minute b-minute)

{

返回1;

} else if(a-runtime==b-runtime a-year==b-year a-month==b-month a-day==b-day a-hour==b-hour a-minute==b-minute a-second b-second)

{

返回1;

} else if(a-runtime==b-runtime a-year==b-year a-month==b-month a-day==b-day a-hour==b-hour a-minute==b-minute a-second==b-second a-micro b-micro

{

返回1;

} else if(a-runtime==b-runtime a-year==b-year a-month==b-month a-day==b-day a-hour==b-hour a-minute==b-minute a-second b-second a-micro==b-micro)

{

返回0;

}

其他

{

return-1;

}

}

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: