sscanf使用求助

believe_me 2010-09-07 03:18:35
char msg1[256] = "hello::world";
char buf[32] = "\0", buf1[32]="\0";
if (2 != sscanf(msg1, "%s::%s", buf, buf1)){
printf("Error!\n");
}
printf("%s %s\n",buf, buf1);
我想打印出hello world,总是有问题?
大虾帮个忙。
...全文
154 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
quanhao8 2010-09-07
  • 打赏
  • 举报
回复
学过~~~~~
canshui 2010-09-07
  • 打赏
  • 举报
回复
对于,%s 的终止读取的条件是什么,是,遇到空格,行结束,文件结尾,读取内容结束
所以,第一个 %s 就把 hello::world 全读进去了

所以用char msg1[256] = "hello world";
sscanf(msg1, "%s %s", buf, buf1)); 两个%s之间用空格相隔
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 believe_me 的回复:]

我是在linux下编译和运行的。
[/Quote]
检查编译器、终端字符集设置...
believe_me 2010-09-07
  • 打赏
  • 举报
回复
Visual studio2005下运行没有问题。
believe_me 2010-09-07
  • 打赏
  • 举报
回复
我是在linux下编译和运行的。
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 believe_me 的回复:]

好快
换了中文就又不行了
[/Quote]
呃,我这里测试没问题
believe_me 2010-09-07
  • 打赏
  • 举报
回复
好快
换了中文就又不行了
char msg1[256] = "hello::世界";
char buf[32] = "\0", buf1[32] = "\0";

if ( 2 != sscanf( msg1, "%[^:]::%s", buf, buf1 ) )
{
printf( "Error!\n" );
}

printf( "%s %s\n", buf, buf1 );
qf17331733 2010-09-07
  • 打赏
  • 举报
回复
就不能直接打印吗?
char msg1[256] = "hello world"; 
printf("%s\n",&msg1);

  • 打赏
  • 举报
回复
    char msg1[256] = "hello::world";
char buf[32] = "\0", buf1[32] = "\0";

if ( 2 != sscanf( msg1, "%[^:]::%s", buf, buf1 ) )
{
printf( "Error!\n" );
}

printf( "%s %s\n", buf, buf1 );

试试这个

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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