gpt4 book ai didi

c - sscanf 无法匹配字符串

转载 作者:行者123 更新时间:2023-12-01 22:05:42 24 4
gpt4 key购买 nike

我只是做了一个非常简单的 sscanf,它失败了,我不知道为什么(我是 C 初学者)。

我相信它应该有效并且我对此感到疯狂......

这是代码示例:

int rval; // return value
char* buf;

char* file = "/proc/stat";

long unsigned int intr=0, introld=0;

buf=file2buf(file);
if((rval=sscanf(buf, "intr %lu", &introld)) < 1) perror("ERROR");
printf("buffer: %s\nintrold: %lu\n", buf, introld);
free(buf);

这是它打印出来的内容:

ERROR: Success

buffer: cpu 1226442 3373 193292 19167181 57056 3 154 0 0 0

cpu0 323691 790 47844 4778847 9693 0 62 0 0 0

cpu1 290857 1430 42436 4804284 20607 0 25 0 0 0

cpu2 326087 608 57761 4763973 10862 2 40 0 0 0

cpu3 285805 544 45249 4820075 15893 0 25 0 0 0

intr 48727278 36 26655 0 0 0 0 0 0 1 11277 0 0 3788861 0 0 0 70288 0 0 2 0 0 0 33 0 0 443731 0 25936 1429307 25 893 2807619

introld: 0

显然匹配字符串(intr)就在那里。我犯了什么明显的错误?

最佳答案

scanf family of functions不进行一般模式匹配,它尝试完全匹配输入,这意味着您传递给sscanf的字符串必须以开始>“intr”使其能够匹配。

您应该考虑从文件中逐行读取并尝试使用例如strncmp,然后在匹配的行上调用sscanf。或者可能查找正则表达式库。

关于c - sscanf 无法匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31495348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com