9 c
我在C中有一个非常简单的问题.我正在按行读取文件,并将其存储在缓冲区中
char line[80];
Run Code Online (Sandbox Code Playgroud)
每行具有以下结构:
Timings results : 2215543
Timings results : 22155431
Timings results : 221554332
Timings results : 2215543
Run Code Online (Sandbox Code Playgroud)
我想要做的是从这一行中提取整数值.这里的C是否提供了允许我这样做的简单功能?
谢谢
Joa*_*son 17
每行可以使用sscanf,例如:
#include <stdio.h>
int time = -1;
char* str = "Timings results : 120012";
int n = sscanf(str, "Timings results : %d", &time);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,n == 1表示成功
是的 - 尝试atoi
int n=atoi(str);
Run Code Online (Sandbox Code Playgroud)
在您的示例中,整数之前有一个固定前缀,因此您可以简单地在 szLine 传递给 atoi 之前添加一个偏移量,例如
int offset=strlen("Timings results : ");
int timing=atoi(szLine + offset);
Run Code Online (Sandbox Code Playgroud)
相当高效,但不能很好地处理不符合预期的线路。不过,您可以先检查每一行:
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
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用sscanf来解析这样的行,这使得代码更简洁:
int timing;
sscanf(szLine, "Timings results : %d", &timing);
Run Code Online (Sandbox Code Playgroud)
最后,另请参阅将整数解析为字符串 C以获取更多想法。
| 归档时间: |
|
| 查看次数: |
30639 次 |
| 最近记录: |