将(void)系统的输出保存到变量(C)中

将(void)系统的输出保存到变量(C)中,c,system,exe,C,System,Exe,这是我的密码: #include<stdlib.h> #include<stdio.h> int main() { (void)system("cat json.json | ./jq.exe '.location | {street, city}'"); return 0; } #包括 #包括 int main() { (void)系统(“cat json.json |./jq.exe.位置|{街道,城市}”); 返回0; } 我想把(void)系统的输出保存到一

这是我的密码:

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

int main()
{
(void)system("cat json.json | ./jq.exe '.location | {street, city}'");
return 0;
}
#包括
#包括
int main()
{
(void)系统(“cat json.json |./jq.exe.位置|{街道,城市}”);
返回0;
}

我想把(void)系统的输出保存到一个变量中,但我该怎么做呢

标准C对此没有真正的解决方案;只有变通办法。一种方法是在system()内部使用shell重定向,将输出写入文件,然后使用
fopen()
fread()
和friends()读取该文件。

您必须创建一个脚本,并将系统调用的输出重定向到该管道,然后从管道读取数据——这就是调用的基本功能,这意味着您只需将
system
调用转换为
popen
调用,然后从文件描述符读取要填充的变量

您可以找到关于如何在堆栈溢出上使用popen的示例,如这里的示例

可能重复的