簡體   English   中英

從 c++ 運行 python 腳本的問題

[英]Issue running python script from c++

我正在嘗試制作一個可以對 python 程序的 output 進行評分的程序。 我遺漏了一些簡單的東西,但我一直在嘗試將 output 轉換為字符串時遇到段錯誤。 如果我將其保留為 char* 則可以正常工作,但我想要一個字符串,以便將來可以比較 output。 這是代碼...

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

string runPython(const char* filename) {
    string cmd = "python " + string(filename);
    char* buf;
    FILE* in = popen(cmd.c_str(), "r");
    fscanf(in,"%s", buf);
    string res(buf);
    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;
}

您必須先分配緩沖區。

#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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM