如何将变量插入 sscanf 字符串?

How to insert variable into sscanf string?

我正在使用以下文件从文件中提取数据:

sscanf (match, "cpu %d %d %d...", &user1, &nice1, &kernel1, &idl...);

当我尝试在一个循环中为 N 个核心读取它时,我的问题就开始了:

sscanf (match, "cpu0 %d %d..", &user1, &nic...);
sscanf (match, "cpu1 %d %d..", &user1, &nic...);
sscanf (match, "cpu2 %d %d...", &user1, &nic...);

有什么方法可以在 C 中将十进制变量插入到这个 sscanf 中吗?

编辑: 我想增加 "cpu" 字符串旁边的数字以获得 "cpu0 %d %d"、"cpu1 %d %d"、"cpu2 %d %d"

Edit2 + 解决方案:

/* Locate the line that starts with "cpuX " */
match = strstr (buffer, cpux);
/* Parse the line and extract data */
sscanf (match, "%s %d %d %d %d %d %d %d %d %d %d", *&cpuXgarbage,&...)
int user[20];
int nic[20];
int i = 0;
sscanf (match, "cpu0 %d %d..", &(user[i++]), &(nic[i++])...);
sscanf (match, "cpu0 %d %d..", &(user[i++]), &(nic[i++])...);
.....

有,但可能是方法不对。

为什么不将 cpu0 放入 sscanf 字符串中,为什么不放入 %s?将 cpu0 读入字符串。那么匹配不匹配就无所谓了。您可以有一个读取循环,在开始时查找 "cpu" 并在不匹配时停止。

for (int i=0; i < 10; i++) {
    sprintf(format, "cpu%d blah blah", i);
    sscanf(match, format, ...);
}