登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

图像处理 视频分析 机器视觉 模式识别

方向比努力更重要

 
 
 

日志

 
 
关于我

河北软件开发项目,电子警察卡口项目,公安天网项目,媒体流处理,数字图像处理。媒体服务器 RTSP、图像处理、车牌识别……DCT变换,H.264压缩

C语言转换格式符大全(sscanf)  

2009-10-20 16:09:13|  分类: C + 算法 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

%c 字符 %d 十进制整数 %e 浮点数,指数e的形式 %s 字符串 %E 浮点数,指数E的形式 %u 无符号十进制整数 %f 浮点数,小数点形式 %g 输出%f与%e较短者 %o 无符号八进制整数 %G 输出%F与%E较短者 %x 无符号十六进制整数,以0~f表示 %X 无符号十六进制整数,以0~F表示 %l 长整型,加在d,o,u,x,X之前,如%ld(注意%l是英文字母l,不是数字1)

 

************************************************************************************************************

 

格式字符串的一般形式为:
%[*][输入数据宽度][长度]类型
其中有方括号[]的项为任选项

“*”符:用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。
如:
scanf("%d %*d %d",&a,&b);
当输入为:1 2 3时,把1赋予a,2被跳过,3赋予b。

 

 

sscanf高级用法:

1. 常见用法。
char str[512] = {0};
sscanf("123456 ", "%s", str);
printf("str=%s\n", str);

2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
sscanf("123456 ", "%4s", str);
printf("str=%s\n", str);

3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。
sscanf("123456 abcdedf", "%[^ ]", str);
printf("str=%s\n", str);

4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
sscanf("123456abcdedfBCDEF", "%[1-9a-z]", str);
printf("str=%s\n", str);

5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
sscanf("123456abcdedfBCDEF", "%[^A-Z]", str);
printf("str=%s\n", str);

 源代码一如下:
#include <stdio.h>
#include <stdlib.h>

char *tokenstring = "12:34:56-7890";
char a1[3], a2[3], a3[3];
int i1, i2;

void main(void)
{
   clrscr();
   sscanf(tokenstring,  "%2s:%2s:%2s-%2d%2d",  a1, a2, a3, &i1, &i2);
   printf("%s\n%s\n%s\n%d\n%d\n\n", a1, a2, a3, i1, i2);
   getch();
}

源代码二如下:
#include <stdio.h>
#include <stdlib.h>

char *tokenstring = "12:34:56-7890";
char a1[3], a2[3], a3[3];
int i1, i2;

void main(void)
{
   clrscr();
   sscanf(tokenstring,  "%2s%1s%2s%1s%2s%1s%2d%2d",  a1,  &a, a2, &a3, a3, &a, &i1, &i2);
   printf("%s\n%s\n%s\n%d\n%d\n\n", a1, a2, a3, i1, i2);
   getch();
}

源代码三如下:
#include <stdio.h>
#include <stdlib.h>

char *tokenstring = "12:34:56-7890";
char a1[3], a2[3], a3[3], a4[3], a5[3];
int i1, i2;

void main(void)
{
   char a;

   clrscr();
   sscanf(tokenstring,  "%2s%1s%2s%1s%2s%1s%2s%2s",  a1,  &a, a2, &a3, a3, &a, a4, a5);
   i1 =atoi(a4);
   i2 =atoi(a5);

   printf("%s\n%s\n%s\n%d\n%d\n\n", a1, a2, a3, i1, i2);
   getch();
}

方法四如下(以实例说明,原理相同):
/* The following sample illustrates the use of brackets and the
   caret (^) with sscanf().
   Compile options needed: none
*/

#include <math.h>
#include <stdio.h>
#include <stdlib.h>

char *tokenstring = "first,25.5,second,15";
int result, i;
double fp;
char o[10], f[10], s[10], t[10];

void main()
{
   result = sscanf(tokenstring, "%[^','],%[^','],%[^','],%s", o, s, t, f);
   fp = atof(s);
   i  = atoi(f);
   printf("%s\n %lf\n %s\n %d\n", o, fp, t, i);

}

  评论这张
 
阅读(1892)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018