从C ++运行python脚本的问题

时间:2019-09-26 00:29:26

标签: python c++

我正在尝试制作一个可以对python程序的输出进行评分的程序。我缺少一些简单的东西,但是由于尝试将输出转换为字符串,我一直遇到段错误。如果我将其保留为char *,但效果很好,但是我需要一个字符串,以便将来可以比较输出。 这是代码...

Network request failed

1 个答案:

答案 0 :(得分:0)

您必须先分配缓冲区。

#include <iostream>
#include <string>
using namespace std;

#define MAX_READ 4096

string runPython(const char* filename) {
    string cmd = "python " + string(filename);
    char* buf = new char[MAX_READ]; // buffer allcoation
    FILE* in = popen(cmd.c_str(), "r");
    fscanf(in,"%s", buf);
    string res(buf);
    delete[] buf; // buffer release
    pclose(in);
    return res;
}

int main(int argc, char** argv) {
    if(argc > 1) {  
        string res = runPython(argv[1]);
        printf("%s", res.c_str());
    }
    else {
        printf("\e[31mNo File Submitted for Grading\e[0m\n");
    }
    return 0;
}