Ниже приведен код:
#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <fstream>
#include <memory.h>
int main()
{
std::ifstream file;
file.open("/proc/meminfo");
if(file.fail())
return 0;
file.seekg(0, std::ios::end);
int fileLen = file.tellg();
file.seekg(0, std::ios::beg);
char buffer[fileLen + 1];
memset(buffer, 0, fileLen + 1);
file.read(buffer, fileLen + 1);
if(file.fail())
return 0;
unsigned long long total = 0;
unsigned long long free = 0;
sscanf(buffer, "%*s %llu%*s%llu", &total, &free);
file.close();
return 1;
}
В коде fileLen
равно -1, но я не знаю причину. Если ifstream
открывает другой файл, например 1.txt
, программа верна.
наконец спасибо за помощь