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