Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4958311
  • 博文数量: 1696
  • 博客积分: 10870
  • 博客等级: 上将
  • 技术积分: 18357
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-30 15:16
文章分类
文章存档

2017年(1)

2016年(1)

2015年(1)

2013年(1)

2012年(43)

2011年(17)

2010年(828)

2009年(568)

2008年(185)

2007年(51)

分类: C/C++

2008-08-06 17:34:30

一、sscanf示例

/* The following sample illustrates the use of brackets and the
caret (^) with sscanf().
Compile options needed: none
*/

#include
#include
#include

char *tokenstring = "first,25.5,second,15";
int result, i, rv;
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);
}

二、fscanf示例

/* The following sample illustrates the use of brackets and the
caret (^) with sscanf().
Compile options needed: none
*/

#include
#include
#include

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

FILE *filep; //文件的打开、关闭操作在此省略

void main()
{
rv = fscanf(filep, "%s", tokenstring);
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);
}
如果你直接使用fscanf读取文件中存放的字符串"first,25.5,second,15",
即fscanf(fp, "%[^','],%[^','],%[^','],%s", o, s, t, f);
结果会失败,原因我还没有调查出来。

你必须先把文件中存放的字符串读入tokenstring中,将文件操作转化为内存操作,才能解析成功。
阅读(2356) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~