码迷,mamicode.com
首页 > 编程语言 > 详细

c 语言 格式化输出

时间:2015-06-12 14:38:22      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

#include <stdio.h>

int main()
{
    int i;
    unsigned int j;
    char input[ ]="10 0x1b aaaaaaaa bbbbbbbb";
    char s[5];
 
    sscanf(input,"%d %x %5[a-z] %*s %f",&i,&j,s,s);
    printf("%d %d %s\n",i,j,s);
 return 0;
}
%5[a-z]意思是最多匹配5个a-z的字符串。在格式化符中[...]的意义,匹配与[]中最长输入的非空字符

举两个例子:
  如果你把改成这样
  char input[ ]="10 0x1b aaa0aaaaa bbbbbbbb";
  那么这是s只能是aaa,到0被截断,因为0不属于a-z。

  如果你把改成这样
  char input[ ]="10 0x1b nothing bbbbbbbb";
  [a-z]改为[a-p]
  那么这是s只能是no,到t被截断,因为t不属于a-p。

  另外:最后一个%f在这里没什么用。

  
  %*s是什么意思,这个就是一个简单的跳过一个字符串,只用在输入格式控制。
  还是举个例子:
  char input[ ]="10 0x1b aaaa bbbb cccc";
  sscanf(input,"%d %x %5[a-z] %*s %s",&i,&j,s,s);

  这样最后输出s中存的是cccc。
  第一个%5[a-z],把aaaa读入了;然后紧接着是%*s意思是跳过一个字符串,也就是bbbb被跳过;第三个%s把cccc读入。
  这个符号的目的就是可以让你有选择的读入,不需要的直接跳过

c 语言 格式化输出

标签:

原文地址:http://www.cnblogs.com/yll-sww/p/4571514.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!