首页 > 解决方案 > 从 c 中的命令输出中提取值

问题描述

我正在运行这个命令

cat /proc/devices/memory/events/pcie0_read

在我的代码(c 应用程序)中。这是我的代码

#include<stdio.h>
#include<stdlib.h>

void main()

{

system(" cat /proc/devices/memory/events/pcie0_read ");

}

这个命令的输出是

fidt=0x12,dtw=0x33,id=0x67

我只想使用相同的 c 应用程序从命令输出中提取值。

我只想提取 0x336712 并将此值保存在上述命令输出的变量中。

例如:

char var[100] or unsigned int var;

从命令输出中提取后,我应该得到它,

var=0x336712

我怎么做???

标签: clinuxawksed

解决方案


除非您确实需要运行外部命令,否则您可能希望/proc/...像任何普通文件一样直接读取。此外,fscanf函数非常通用,可以避免复杂的字符串解析。

#include <stdio.h>
int main() {
        unsigned int fidt, dtw,id;

        FILE *f = fopen("/proc/devices/memory/events/pcie0_read", "r");
        fscanf(f, "fidt=%x,dtw=%x,id=%x", &fidt, &dtw, &id);
        fclose(f);

        printf("output: 0x%x\n", (id << 32) | (dtw << 16) | fidt);
        return 0;
}

推荐阅读