从 c++ 运行 python 脚本时出现问题

Issue running python script from c++

本文关键字:问题 脚本 c++ 运行 python      更新时间:2023-10-16

我正在尝试制作一个可以对python程序输出进行评分的程序。我错过了一些简单的东西,但我不断收到一个 seg 错误,因为我试图将输出变成一个字符串。如果我把它留一个 char*,工作正常,但我想要一个字符串,以便将来可以比较输出。 这是代码...

#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 Gradinge[0mn");
}
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 Gradinge[0mn");
}
return 0;
}