temp="0.05~1.00";
sscanf(temp, "%[^~]", frepre);
MessageBox(frepre, "第一个频率");
sscanf(temp, "%*[^~]~%s", frebeh);
MessageBox(frebeh, "第二个频率");
运行时没问题,调试时就会发现frepre与frebeh的值总是一样,这是为什么。再我的程序之后的操作,就会出现意想不到的结果了!
问题我知道了,因为
sscanf(temp, "%[^~]", frepre);
sscanf(temp, "%*[^~]~%s", frebeh);
这里frepre,frebeh两个变量,我定义成CString型的对象。所以总是出BUg,不仅仅是它俩的值一样,凡是程序中随便定义的CString 对象,在调试时,他们的值都一样!!只有把frepre,frebeh定义为字符数组,才把这个问题解决掉!
单片机sscanf函数问题
红色部分表示读到的变量数量少于2(比如数据为12:30时可以读到2个变量,如果是12则只能读到一个变量),或者没有读到。sscanf的输入是字符串变量,而scanf的输入是控制台,对单片机来说,scanf的输入一般指串口输入。
sscanf函数---一个简单的问题
这个问题不简单,只用一句sscanf是没有办法实现你的要求,而且用ssanf也不是好的方法, strtok虽然也不好,但这这里比sscanf的方案好。 如果非用sscanf,则需要间接转换,如下:int n;int *pa = a;char ch[5]; \/* 最大5位数,可修改*\/char *ps = s;while( sscanf(ps, "%[^ ] %n", c...
c语言关于scanf的问题
首先,scanf,sscanf这类输入函数是支持一些简单的正则表达式。scanf("as%s",j); 的正则表达式就是"as%s",即限制输入要从as开始匹配,如果匹配不了,则认为输入错误,即相当于没有输入。如果匹配到as则后面的%s会把输入存放到f这个数组里。你可以试试这样的输入语句scanf("%*[^#]%s", j);它的...
MFC中使用sscanf获取CString字符串中的数据
RT,通过问题排查,我大致可以确定sscan()函数的使用上或者强制类型装上出现了问题。在VS2015环境下,sscanf的第一个参数不接受CString类型(所以第一个参数使用timestr.GetBuffer(MA... RT,通过问题排查,我大致可以确定sscan()函数的使用上或者强制类型装上出现了问题。在VS2015环境下,sscanf的第一个参数不接受CString...
C++用SSCANF函数提取出现的问题
&x2,s3,&y2);以逗号为分格符,跳过一个字符串用:sscanf(str,"%*[^','],%lf, %lf,%*[^','],%lf,%*[^','],%lf",&x,&y,&x2,&y2);=== 注意,跳过用 %*[^','] ,后面无 s1 。。。读 用 %[^','] , 后面有 s1 。。。其它问题也解决了。
sscanf函数的问题
格式化输入,将字符串"NUMPOLLIES %d\\n" %d是&numtriangles的整型值 保存到oneline(应该是字符数组)
sscanf函数问题 123\/456\/789\/abc.xxx 怎么提取最后一个\/之后的内容?最...
include <stdio.h>#include <string.h>int main(){ char b[20], c[20]; scanf("%s", b); do { sscanf(b, "%*[^\/]\/%s", c); sprintf(b, "%s", c); }while(strstr(c, "\/")); printf("%s\\n", c); return 0;}测试 输入:123\/456\/789\/abc...
关于sscanf的问题
sscanf(...,"%lf\\t",d);可以读 具体你看下面的msdn吧 Read formatted data from a string. These functions are deprecated because more secure versions are available; see sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.int sscanf(const char *buffer,const char *format [,argument ...
C++用SSCANF函数提取出现的问题
&x2,s3,&y2);以逗号为分格符,跳过一个字符串用:sscanf(str,"%*[^','],%lf, %lf,%*[^','],%lf,%*[^','],%lf",&x,&y,&x2,&y2);=== 注意,跳过用 %*[^','] ,后面无 s1 。。。读 用 %[^','] , 后面有 s1 。。。其它问题也解决了。
c语言用scanf( )时遇到一个难题
这个小问题还真是很让人费神的。首先,scanf 按格式串去转换,如你的例子, 当输入串中不够3个数时, 函数并不退出,一定要等到转换够了3个数, 除非是按Ctrl+z结束, 但这并不符合人们的输入习惯。其次,当输入了多于3个数时, scanf只转换了前三个, 后边的会留在输入流中,等下一个输入...