鱼C论坛

 找回密码
 立即注册
查看: 3434|回复: 11

关于sscanf和&的那点事。。。我不懂,求教!

[复制链接]
发表于 2012-1-4 18:16:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 絮飞 于 2012-1-5 08:28 编辑

有个字符串 "tian&a111"

我想要分别提取tian 和 a111

我如下操作:

char username[255];
char password[255];

sscanf("tian&a11","username=%s&password=%s",username,password);

按理说第一个%s对应username,第二个%s对应password应该对号入座才对。但是测试之后却发现,username=“tian&password=a11”,password值为空!甚为不解,苦思一天,求解!!或者其他能把这个字符串拆解开的方式也行!
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-1-4 18:24:27 | 显示全部楼层
今天急等,大神快来帮忙啊!!!!
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-1-4 19:06:53 | 显示全部楼层
在线等啊了,,,,,,
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-4 20:15:23 | 显示全部楼层
帮顶,,表示这是第一次看到这个函数
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-1-4 21:41:01 | 显示全部楼层
有大神来帮解决下呀,感谢上边帮顶的哥们
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-4 23:38:41 | 显示全部楼层

#include <stdio.h>

void main( void )
{
   char  tokenstring[] = "15 12 14...";
   char  s[81];
   char  c;
   int   i;
   float fp;

   /* Input various data from tokenstring: */
   sscanf( tokenstring, "%s", s );
   sscanf( tokenstring, "%c", &c );
   sscanf( tokenstring, "%d", &i );
   sscanf( tokenstring, "%f", &fp );

   /* Output the data read */
   printf( "String    = %s\n", s );
   printf( "Character = %c\n", c );
   printf( "Integer:  = %d\n", i );
   printf( "Real:     = %f\n", fp );
}

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-1-5 08:20:09 | 显示全部楼层

不懂。sscanf( tokenstring, "%s", s );
   sscanf( tokenstring, "%c", &c );
   sscanf( tokenstring, "%d", &i );
   sscanf( tokenstring, "%f", &fp );

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-1-5 08:21:35 | 显示全部楼层
絮飞 发表于 2012-1-5 08:20
不懂。sscanf( tokenstring, "%s", s );
   sscanf( tokenstring, "%c", &c );
   sscanf( tokenstring ...

这岂不是把tokenstring字符串中的第一个起始数据'15',分别写入了s,c,i,fp中吗?
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-1-5 08:27:48 | 显示全部楼层
谢谢大家的帮助,已经解决了。
针对提取  "tian&a11"这样的字符串,sscanf是可以解决的,这个函数很强大:

char username[256];
char password[256];

sscanf("tian&a11","%[^&]%*[^a]%s",username,password);

printf("%s",username);
printf("%s",password);

这是在提取C网页控制台登陆系统的用户名和密码的用法,很给力哦。呵呵谢谢大家!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-5 17:09:05 | 显示全部楼层
絮飞 发表于 2012-1-5 08:27
谢谢大家的帮助,已经解决了。
针对提取  "tian&a11"这样的字符串,sscanf是可以解决的,这个函数很强大: ...

%[^&]%*[^a]%    请问这个是起到什么作用啊
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-1-5 17:12:21 | 显示全部楼层
seuer126 发表于 2012-1-5 17:09
%[^&]%*[^a]%    请问这个是起到什么作用啊

%[^&]取字符到&截止
%*[^a]忽略中间字符到a
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-5 17:22:01 | 显示全部楼层
絮飞 发表于 2012-1-5 17:12
%[^&]取字符到&截止
%*[^a]忽略中间字符到a

原来是这样的啊, 谢谢啊
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-10 16:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表