c语言 sscanf(poststr,"m=%[^&]&n=%s",m,n)中的%[^&]是什么意思?

len=atoi(lenstr);
fgets(poststr,len+1,stdin);
if(sscanf(poststr,"m=%[^&]&n=%s",m,n)!=2)
{
printf("<DIV STYLE=\"COLOR:RED\">Error: Parameters are not right!</DIV>\n");
}
else
{
printf("<DIV STYLE=\"COLOR:GREEN; font-size:15px;font-weight:bold\">m * n = %d</DIV>\n",atoi(m)*atoi(n));
}

里面的 %[^&]是什么意思呀,谢谢!

不懂的别乱回答,谢谢!

%[^&]的意思是指输入的数据要遇上&才结束;
比如说在处理字符串中的scanf("%s",a);如果普通的话遇上了空格或者回车就结束了;
但把它改成这个样子scanf("%[^=]",a);就表示在输入数据中是以‘=’为结束标志的。在遇到空格和回车都不结束当前输入。
这句话有意思的地方就在于当使用这种特殊结束标志以后,这个标志不但不会被存储在对应的存储空间里,而且输出的时候按照普通方法即可输出所输入的字符;
比如我说,我输入了:
sdfasf asdfasf adf

asf
adsf
fds =
使用printf("%s",a);它就会按照原样式输出到’=‘前的位置;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-15
%[^&]表示从poststr这个字符串里从头开始取字符,直到遇到第一个&为止,比如说:

sscanf("123456&abcdedf", "%[^&]", buf);
则buf里存的是123456。
我也是百科出来的,有问题多百科,别上来就问。
http://baike.baidu.com/link?url=HIKmMa8fSDG1T2Op3jApYilykadGteMrHEZ98hqCTwzTbA1i1gC4vjQKfUqGqvXqlGBMBoI0Y-4VbAyyIYIxsK
第2个回答  2013-09-15
%[^&]的意思是指输入的数据要遇上&才结束
第3个回答  2013-09-15
过滤掉&后的所有字符,比如abcd&efg,则只将abcd放入m中。。。