Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python解析在c语言中的嵌入_Python_C_Parsing_Embedding - Fatal编程技术网

Python解析在c语言中的嵌入

Python解析在c语言中的嵌入,python,c,parsing,embedding,Python,C,Parsing,Embedding,我试图在C代码中嵌入两个python函数。我的问题是,我无法在C中将None py对象解析为NULL 我在其中创建了一个“check.py”文件: def integer(s): a = input(s) try: a = int(a) return a except ValueError: print("Invalid input\n") return #NULL def floating(s):

我试图在C代码中嵌入两个python函数。我的问题是,我无法在C中将None py对象解析为NULL

我在其中创建了一个“check.py”文件:

def integer(s):
    a = input(s)
    try:
        a = int(a)
        return a
    except ValueError:
        print("Invalid input\n")
        return #NULL

def floating(s):
    a = input(s)
    try:
        a = float(a)
        return a
    except ValueError:
        print("Invalid input\n")
        return #NULL
下面是C代码:

#include <Python.h>

int inputInt() {
    PyObject *strret, *mymod, *strfunc, *strargs;
    int result;
    Py_Initialize();
    PyRun_SimpleString("import sys; sys.path.insert(0, '.')");
    mymod = PyImport_ImportModule("prova");
    strfunc = PyObject_GetAttrString(mymod, "integer");
    strargs = Py_BuildValue("(s)", "Insert an integer value: ");
    strret = PyEval_CallObject(strfunc, strargs);
    //next line is the problem (can't parse None py object to NULL)
    PyArg_Parse(strret, "l", &result);
    return result;
}

double inputDouble() {
    PyObject *strret, *mymod, *strfunc, *strargs;
    double result;
    Py_Initialize();
    PyRun_SimpleString("import sys; sys.path.insert(0, '.')");
    mymod = PyImport_ImportModule("prova");
    strfunc = PyObject_GetAttrString(mymod, "floating");
    strargs = Py_BuildValue("(s)", "Insert a floating point value: ");
    strret = PyEval_CallObject(strfunc, strargs);
    //next line is the problem (can't parse None py object to NULL)
    PyArg_Parse(strret, "d", &result);
    return result;
}

int main(int argc, char** argv) {
    long a = inputInt();
    printf("%ld\n", a);
    double b = inputDouble();
    printf("%.3f\n", b);
    return 0;
}
#包括
int输入(){
PyObject*strret、*mymod、*strfunc、*strargs;
int结果;
Py_初始化();
PyRun_SimpleString(“导入系统;系统路径插入(0,”)”;
mymod=PyImport_ImportModule(“prova”);
strfunc=PyObject_GetAttrString(mymod,“整数”);
strargs=Py_BuildValue(“(s)”,“插入整数值:”;
strret=PyEval_CallObject(strfunc,strargs);
//下一行是问题(无法将None py对象解析为NULL)
PyArg_解析(stret,“l”和result);
返回结果;
}
双输入双(){
PyObject*strret、*mymod、*strfunc、*strargs;
双重结果;
Py_初始化();
PyRun_SimpleString(“导入系统;系统路径插入(0,”)”;
mymod=PyImport_ImportModule(“prova”);
strfunc=PyObject_GetAttrString(mymod,“floating”);
strargs=Py_BuildValue(“(s)”,“插入浮点值:”;
strret=PyEval_CallObject(strfunc,strargs);
//下一行是问题(无法将None py对象解析为NULL)
PyArg_解析(stret,“d”和result);
返回结果;
}
int main(int argc,字符**argv){
长a=输入();
printf(“%ld\n”,a);
双b=输入双();
printf(“%.3f\n”,b);
返回0;
}

程序编译正确,但如何在C中将None对象实现为NULL?

您是否检查了
stret
是否不正确?