Chinaunix首页 | 论坛 | 博客
  • 博客访问: 327581
  • 博文数量: 79
  • 博客积分: 2466
  • 博客等级: 大尉
  • 技术积分: 880
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-07 16:47
文章分类

全部博文(79)

文章存档

2014年(3)

2012年(7)

2011年(14)

2010年(2)

2009年(2)

2008年(2)

2007年(18)

2006年(31)

分类: C/C++

2012-06-25 16:47:46

int
main() {
  int i, i2, i3, len;
  sscanf("1234", "%2d", &i); 【%后面可以加一个数字,指定最多使用多少个字符】
  printf("Got i: %d\n", i);

  sscanf("1234 567 8910", "%d %*d %d %n", &i, &i2, &len); 【%后面加*,意思是读取相应的那部分字符,但不把转换结果赋予任何变量】
  printf("Got i2: %d\n", i2);
  printf("# of chars consumed: %d\n", len);

  sscanf("1234    567 89", "%2d %*1d %1d %n", &i, &i3, &len); 【%n不消耗输入字符串,它只是将目前为止已消耗的字符数存入指定变量】
  printf("Got i2: %d\n", i3);
  printf("# of chars consumed: %d\n", len);  【注意%*1d的用法;另外%1d不但消耗了字符4,还有其后的4个空格,所以n=8】

  char buf[30], b2[30];
  sscanf("abcdefghijk;12345", "%29[a-z]%n", buf, &len); 【%后面可以用方括号指定一个像正则表达式的字符集,^-的含义都一样】
  printf("Got string %s, length %d\n", buf, len);
  sscanf("abcde4ghijk;12345", "%29[^4]4%29[^4]", buf, b2);  【[]和^配合使用可以达到strtok的效果】
  printf("Got string %s, %s\n", buf, b2);
  
  return 0;
}

输出结果:
$ ./a.out
Got i: 12  
Got i2: 8910  
# of chars consumed: 13 
Got i2: 4  
# of chars consumed: 8  
Got string abcdefghijk, length 11  
Got string abcde, ghijk;123  
阅读(624) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~