c - printf() 未打印正确的计算结果

标签 c linux operating-system

这里是 C++ 程序员,需要快速解决以下问题。

我需要执行以下减法,其中输入从文件中获取,所需的数字存储在变量中。但是 printf() 显示的值是 0。

#include<stdio.h>

main()
{   system("clear");
    system("cat /proc/meminfo | grep MemTotal");
    system("cat /proc/meminfo | grep MemFree ");
    int a=system("cat /proc/meminfo | grep MemTotal | grep -Eo [0-9]+");
    int b=system("cat /proc/meminfo | grep MemFree | grep -Eo [0-9]+");
    int c=a-b;
    printf("%d \n",c);
}

输出如下:

MemTotal:        3913212 kB
MemFree:         1769672 kB
3913212
1769388
0 

此外,有没有一种方法可以抑制代码中第 7 行和第 8 行的输出,因为我只需要它们存储在变量中。

编辑:修复长整型。

谢谢

最佳答案

popen 的示例(已测试)。

#include <stdio.h>

int main(){
    system("clear");
    system(" grep MemTotal /proc/meminfo");
    system(" grep MemFree /proc/meminfo");

    int totalMem=0 , freeMem=0;
    FILE *fp =  popen("grep MemTotal /proc/meminfo | grep -Eo [0-9]+", "r");
    FILE *fp1 = popen("grep MemFree /proc/meminfo | grep -Eo [0-9]+", "r");
    fscanf(fp, "%d", &totalMem);
    fscanf(fp1, "%d", &freeMem);
    printf("%d \n",totalMem-freeMem);
    pclose(fp);
    pclose(fp1);
}

关于c - printf() 未打印正确的计算结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27046710/

相关文章:

c - ANSI 键序列

c - 如何在 C 中显示 unsigned long long 的最大值?

linux - 桌面文件不执行命令

windows - 进程间通信(IPC)的例子

Mac OS 上的 Java 随机变慢

assembly - 是什么阻止我使用 ASM 跳转到任何绝对地址?

c - c中没有堆吗?

c - 数组宏定义

java - Android Studio 中的最大堆大小无效错误

linux - 使用需要将反引号作为 bash 参数的一部分传递的命令