免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: db_info
打印 上一主题 下一主题

关于sscanf读取数据 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-07-17 11:54 |只看该作者

关于sscanf读取数据

自己查一下吧。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
12 [报告]
发表于 2003-07-17 15:01 |只看该作者

关于sscanf读取数据

fieryfox 回复的很好。

论坛徽章:
0
13 [报告]
发表于 2003-07-18 09:33 |只看该作者

关于sscanf读取数据

非常谢谢,顶一下~

论坛徽章:
0
14 [报告]
发表于 2003-07-18 10:42 |只看该作者

关于sscanf读取数据

感觉fieryfox 好牛啊,这问题都知道。顶
建议版主把此加入精华区

论坛徽章:
0
15 [报告]
发表于 2003-07-18 15:17 |只看该作者

关于sscanf读取数据

功  能: 查找由在第二个串中指定的分界符分隔开的单词
用  法: char *strtok(char *str1, char *str2);
#include <string.h>;
#include <stdio.h>;

int main(void)
{
   char input[16] = "abc,d";
   char *p;

   /* strtok places a NULL terminator
   in front of the token, if found */
   p = strtok(input, ",";
   if (p)   printf("%s\n", p);

   /* A second call to strtok using a NULL
   as the first parameter returns a pointer
   to the character following the token  */
   p = strtok(NULL, ",";
   if (p)   printf("%s\n", p);
   return 0;
}

论坛徽章:
0
16 [报告]
发表于 2003-07-18 15:54 |只看该作者

关于sscanf读取数据

#include <string.h>;
#include <stdio.h>;

int main(void)
{
  char input[16] = "abc,ccc,,ww,h";
  char *p;
  p = strtok(input, ",";
  printf("aaa0=%s\n", p);
  p = strtok(NULL, ",";
  printf("aaa1=%s\n", p);
  p = strtok(NULL, ",";
  printf("aaa2=%s\n", p);
  p = strtok(NULL, ",";
  printf("aaa3=%s\n", p);
  p = strtok(NULL, ",";
  printf("aaa4=%s\n", p);
  return 0;
}
输出为:怎么跳到最后去了??还是不行啊!
:!sscan
[There has been no write since the last change]
aaa0=abc
aaa1=ccc
aaa2=ww
aaa3=h
aaa4=

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
17 [报告]
发表于 2003-07-19 13:12 |只看该作者

关于sscanf读取数据

如果分隔符之间为空,strtok会跳过多个相同的分隔符。所以strtok对这种方式应该是没有办法的。

你可以自己写个函数来处理。

论坛徽章:
0
18 [报告]
发表于 2003-07-19 16:33 |只看该作者

关于sscanf读取数据

niu ren ===

论坛徽章:
0
19 [报告]
发表于 2004-05-23 14:20 |只看该作者

关于sscanf读取数据

真希望有谁写一个函数来对付空字符

论坛徽章:
0
20 [报告]
发表于 2006-09-06 12:05 |只看该作者
加一条,回复ibm99的问题:
sscanf(test,"%[^,],%[^,],%[^,],,,%[^,],%[^,]",s1,s2,s3,s4,s5);
printf("%s %s %s %s %s",s1,s2,s3,s4,s5);
在vc2005下编译成功。

由于顺便解决了自己的问题,有一些小体会:
对于sscanf的格式化串,规律为
1.%前面的字符为跳过的字符,如果要跳过多个字符,应全部放在%之前;
2.^为读取的字符串,后面所跟字符为截至字符;
3.^须用[]括起,所以一定要核对[]符号的数量
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP