sscanf的用法

来源:互联网 发布:淘宝图片 编辑:程序博客网 时间:2024/06/04 23:45

sscanf的用法,我们首先要知道此接口的实现。

 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。

返回值 成功则返回参数数目,失败则返回-1,错误原因存于errno中。 返回0表示失败    否则,表示正确格式化数据的个数    例如:sscanf(str,"%d%d%s", &i,&i2, &s);    如果三个变成都读入成功会返回3。    如果只读入了第一个整数到i则会返回1。证明无法从str读入第二个整数。

typedef struct{

char a;

char b;

}param;

char property[10];

property_get(FLY_SET_CURCLEARKEY,property,"255");
sscanf(property,"%d", &param->b);

property_get(FLY_SET_CURCLEARKEY,property,"25");
sscanf(property,"%d", &param->a);

结果:a=25,b=0;

原因:b被清空了,系统给予0值。

改为:

property_get(FLY_SET_CURCLEARKEY,property,"255");
sscanf(property,"%hhd", &param->b);

property_get(FLY_SET_CURCLEARKEY,property,"25");
sscanf(property,"%hhd", &param->a);

%hhd 取一个字节地址,%d取4个字节地址。

扩展:

       1. 常见用法。

  charstr[512]={0};
  sscanf("123456","%s",str);
  printf("str=%s",str);

  2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。

  sscanf("123456","%4s",str);
  printf("str=%s",str);

  3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。

  sscanf("123456abcdedf","%[^]",str);
  printf("str=%s",str);

  4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。

  sscanf("123456abcdedfBCDEF","%[1-9a-z]",str);
  printf("str=%s",str);

  5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。

  sscanf("123456abcdedfBCDEF","%[^A-Z]",str);
  printf("str=%s",str);

 

 

原创粉丝点击