如何从char []获取值

时间:2011-12-19 06:48:01

标签: c++ linux scanf

然而,感谢所有帮助我的人。 我想从/ proc / pid / status获取VmRSS值,下面是代码

int main()
{ 
    const int PROCESS_MEMORY_FILE_LEN = 500;
    FILE *file;
    std::string path("/proc/4378/status");
    //path += boost::lexical_cast<std::string>( pid );
    //path += "/status";
    if(!(file = fopen(path.c_str(),"r")))
    {
        std::cout <<"open " << path<<"is failed " << std::endl;
        return float(-1);
    }
    char fileBuffer[PROCESS_MEMORY_FILE_LEN];
    memset(fileBuffer, 0, PROCESS_MEMORY_FILE_LEN);
    if(fread(fileBuffer, 1, PROCESS_MEMORY_FILE_LEN - 1, file) != (PROCESS_MEMORY_FILE_LEN - 1))
    {
        std::cout <<"fread /proc/pid/status is failed"<< std::endl;
        return float(-1);
    }

    fclose(file);

    unsigned long long memoryUsage = 0;
    int a = sscanf(fileBuffer,"VmRSS: %llu", &memoryUsage);
    std::cout << a << std::endl;
    std::cout << memoryUsage << std::endl;
}

最后,谢谢

1 个答案:

答案 0 :(得分:0)

根据您的评论:要在您的char数组中查找VmRSS,请将C++ algorithms与C ++ string library结合使用。然后你将获得VmRSS的位置,你所要做的就是检索想要的结果。通过对这些条目结构的一点了解,这应该是一项简单的任务。

除此之外,最好使用fstream直接读取字符串。