croptree 发表于 2012-2-22 11:33:45

请高手帮我解答一下sscanf 的问题

#include <stdio.h>
int main(int argc, char *argv[])
{
char szStr0, szStr1, szStr2;
    sscanf("www.baidu,com","%[^.],%[^,].%s",szStr0, szStr1, szStr2);
printf("szStr0= %s\n",szStr0);
printf("szStr1= %s\n",szStr1);
printf("szStr2= %s\n",szStr2);
return 0;
}

为什么第二个变量和第三个变量不对呢??

936854586 发表于 2012-2-22 12:48:52

短信联系直径吧,他在行

wtof1996 发表于 2012-2-22 15:03:09

看不懂……你想用点作为分界符提取字符串?

croptree 发表于 2012-2-22 20:23:48

是啊,,可是总是不成功,,

wtof1996 发表于 2012-2-22 20:37:41

那么(%s.%s.%s试试?)

wtof1996 发表于 2012-2-22 20:38:15

试试在括号外面

croptree 发表于 2012-2-22 20:57:06

问题解决了!原来是格式不对!!
sscanf() - 从一个字符串中读进与指定格式相符的数据.   
函数原型:   
int sscanf( const char *, const char *, ...);   
int sscanf(const char *buffer,const char *format,...);   
buffer 存储的数据   
format 格式控制字符串   
argument 选择性设定字符串   
sscanf会从buffer里读进数据,依照argument的设定将数据写回。

若sscanf("www.baidu.com","%[^.]%[^.]%s",szStr0, szStr1, szStr2);
输出
szStr0= www
szStr1= .baidu
szStr2= .com

若sscanf("www.baidu.com","%[^.].%[^.].%s",szStr0, szStr1, szStr2);
输出
szStr0= www
szStr1= baidu
szStr2= com

希望对加有用帮助,,

wtof1996 发表于 2012-2-22 21:00:47

……你终于明白了

wtof1996 发表于 2012-2-22 21:01:46

注意一下,格式字符串除了%的东西以外都是照样读取的
页: [1]
查看完整版本: 请高手帮我解答一下sscanf 的问题