c/c++语言开发共享使用sscanf阅读文本

我对sscanf函数的使用有疑问。

#include  #include  int main() { char a[3]; char b[4]; const char* p = "aaaaaaaaaaaaaaaaaa bbbbbb"; sscanf(p, "%2s %3s", a, b); std::cout << a << std::endl; std::cout << b << std::endl; return 0; } 

期望的输出是:aa bbb

实际输出是:aa aaa

    如果您想跳过一个空格的所有字符,请使用%*[^ ]

     sscanf(p, "%2s%*[^ ] %3s", a, b); 

    %后面的星号告诉sscanf忽略输入的相应部分。

    这产生了所需的输出( 演示1 )。

    为什么这个案子不起作用?

     char a[5]; char b[6]; const char* p = "word word2 , word"; sscanf(p, "%4s%*[^ ] %5s", a, b); 

    这不起作用,因为%s%[...]不能很好地混合。 用%N[^ ]替换%Ns

     sscanf(p, "%4[^ ]%*[ ]%5[^ ]", a, b); 

    演示2 。

      以上就是c/c++开发分享使用sscanf阅读文本相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522119.html

      (0)
      上一篇 2020年12月9日
      下一篇 2020年12月9日

      精彩推荐