从c+运行python脚本时出现问题+;
我正在尝试制作一个可以对python程序的输出进行分级的程序。我错过了一些简单的东西,但我总是因为试图将输出转换为字符串而遇到seg错误。如果我给它留一个char*就可以了,但是我想要一个字符串,这样我以后就可以比较输出了。 这是代码从c+运行python脚本时出现问题+;,python,c++,Python,C++,我正在尝试制作一个可以对python程序的输出进行分级的程序。我错过了一些简单的东西,但我总是因为试图将输出转换为字符串而遇到seg错误。如果我给它留一个char*就可以了,但是我想要一个字符串,这样我以后就可以比较输出了。 这是代码 #include <iostream> #include <string> using namespace std; string runPython(const char* filename) { string cmd = "p
#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;
}
#包括
#包括
使用名称空间std;
字符串runPython(常量字符*文件名){
string cmd=“python”+字符串(文件名);
char*buf;
FILE*in=popen(cmd.c_str(),“r”);
fscanf(单位为“%s”,buf);
字符串res(buf);
pclose(in);
返回res;
}
int main(int argc,字符**argv){
如果(argc>1){
string res=runPython(argv[1]);
printf(“%s”,res.c_str());
}
否则{
printf(“\e[31mNo提交分级的文件\e[0m\n”);
}
返回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;
}
#包括
#包括
使用名称空间std;
#定义最大读取4096
字符串runPython(常量字符*文件名){
string cmd=“python”+字符串(文件名);
char*buf=new char[MAX_READ];//buffer allcoation
FILE*in=popen(cmd.c_str(),“r”);
fscanf(单位为“%s”,buf);
字符串res(buf);
delete[]buf;//缓冲区释放
pclose(in);
返回res;
}
int main(int argc,字符**argv){
如果(argc>1){
string res=runPython(argv[1]);
printf(“%s”,res.c_str());
}
否则{
printf(“\e[31mNo提交分级的文件\e[0m\n”);
}
返回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;
}
#包括
#包括
使用名称空间std;
#定义最大读取4096
字符串runPython(常量字符*文件名){
string cmd=“python”+字符串(文件名);
char*buf=new char[MAX_READ];//buffer allcoation
FILE*in=popen(cmd.c_str(),“r”);
fscanf(单位为“%s”,buf);
字符串res(buf);
delete[]buf;//缓冲区释放
pclose(in);
返回res;
}
int main(int argc,字符**argv){
如果(argc>1){
string res=runPython(argv[1]);
printf(“%s”,res.c_str());
}
否则{
printf(“\e[31mNo提交分级的文件\e[0m\n”);
}
返回0;
}