我在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