当前位置: 技术问答>linux和unix
sscanf使用出错?
来源: 互联网 发布时间:2016-11-04
本文导语: 代码如下: int main() { char str[]=""7754321"rn"; char buf[50]; memset(buf,'',sizeof(buf)); sscanf(&(str[0]),""%s"",buf); printf("str=[%s],buf=[%s]n",str,buf); } 输出结果: str=["7754321" ],buf=[7754321"] 但我的想法是输出buf=7754321而不需要红...
代码如下:
int main()
{
char str[]=""7754321"rn";
char buf[50];
memset(buf,'',sizeof(buf));
sscanf(&(str[0]),""%s"",buf);
printf("str=[%s],buf=[%s]n",str,buf);
}
输出结果:
str=["7754321"
],buf=[7754321"]
但我的想法是输出buf=7754321而不需要红色的引号,为什么"%s"会把最后一个引号也读取进来呢。
int main()
{
char str[]=""7754321"rn";
char buf[50];
memset(buf,'',sizeof(buf));
sscanf(&(str[0]),""%s"",buf);
printf("str=[%s],buf=[%s]n",str,buf);
}
输出结果:
str=["7754321"
],buf=[7754321"]
但我的想法是输出buf=7754321而不需要红色的引号,为什么"%s"会把最后一个引号也读取进来呢。
|
如果单纯指定%s的话,双引号"自身也是字符串的一部分,也会被匹配
"%[^"]s 表示不匹配"符号
"%[^"]s 表示不匹配"符号