关于sscanf的用法

renhaobin 2016-03-15 02:08:55
String buf = "中国,北京,2,5";
String a,b;
int x,y;
sscanf( buf.c_str(), "%[^,],%s,%d,%d",
a.c_str(), b.c_str() ,&x, &y);
为啥解不出来字符串呢?错在哪里了?
...全文
128 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2016-03-16
  • 打赏
  • 举报
回复
String对象的c_str()方法的返回值是不确定的,严重不建议用其作为接收字符串的缓冲。 代码需要改一下:
AnsiString buf = "中国,北京,2,5";
char a[100] = { 0 }, b[100] = { 0 };
int x, y;
int n = sscanf(buf.c_str(), "%[^,],%[^,],%d,%d", a, b, &x, &y);
if (n == 4)
    ShowMessage(b);
ooolinux 2016-03-15
  • 打赏
  • 举报
回复
%[^,]这个是什么?正则表达式吗?
勉励前行 2016-03-15
  • 打赏
  • 举报
回复
sscanf 的输入空间没有被分配。 String a,b; //定义了字符串对象,但是并没有分配字符串空间。 a.c_str() 此时是等于NULL的。你的代码相当于: sscanf( buf.c_str(), "%[^,],%s,%d,%d", NULL, NULL ,&x, &y); 这当然出错了。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧