c/c++语言开发共享从char缓冲区中提取整数

我在C中有一个非常简单的问题。我正在按行读取文件,并将其存储在缓冲区中

char line[80]; 

每行具有以下结构:

 Timings results : 2215543 Timings results : 22155431 Timings results : 221554332 Timings results : 2215543 

我想要做的是从这一行中提取整数值。 这里的C是否提供允许我这样做的任何简单function?

谢谢

    每行可以使用sscanf,例如:

     #include  int time = -1; char* str = "Timings results : 120012"; int n = sscanf(str, "Timings results : %d", &time); 

    在这种情况下,n == 1表示成功

    是的 – 尝试atoi

      int n=atoi(str); 

    在您的示例中,您在整数之前有一个固定的前缀,因此您可以在将其传递给atoi之前简单地向szLine添加偏移量,例如

      int offset=strlen("Timings results : "); int timing=atoi(szLine + offset); 

    相当高效,但不能很好地处理不符合预期的线条。 您可以先检查每一行:

      const char * prefix="Timings results : "; int offset=strlen(prefix); char * start=strstr(szLine, prefix); if (start) { int timing=atoi(start+offset); //do whatever you need to do } else { //line didn't match } 

    您还可以使用sscanf来解析这样的行,这样可以使代码更加简洁:

      int timing; sscanf(szLine, "Timings results : %d", &timing); 

    最后,另请参阅将整数解析为字符串C以获取更多想法。

    需要了解更多c/c++开发分享从char缓冲区中提取整数,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享从char缓冲区中提取整数相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

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

      ctvol管理联系方式QQ:251552304

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

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐