这是一个两部分的问题。为了提供一些背景知识,我有一个 C 代码,如下所示:
int c_func(const char* dir, float a, float b, float c, float d )
{
printf("%s\n", dir);
printf("%f\n",a);
printf("%f\n",b);
printf("%f\n",c);
printf("%f\n",d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是一个简单的函数,它接受一个字符串和 4 个浮点数作为参数并将它们打印出来我正在尝试测试我的 phython/C 接口。我的python代码如下:
calling_function = ctypes.CDLL("/home/ruven/Documents/Sonar/C interface/Interface.so")
calling_function.c_func("hello",1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
现在既然这样有效,我想传递一个包含 4 个浮点数的列表,而不是传递 4 个单独的浮点数。我在网上尝试了不同的代码来编辑我的 C 函数,以便它接受一个列表作为它的参数之一,但我似乎无法弄清楚如何这样做,因为我是一个新程序员,而且我对 C 没有经验。
问题 1:如何编写 C 函数以接受列表作为其参数?
问题 2:这个包含四个浮点数的列表实际上来自我的 Python 代码中的列表列表。在对 C 函数进行编码后,我是否可以使用称为testfv2[0,:] C 函数输入的numpy 数组?testfv2[0,:]是一个 1x4 的维度列表,testfv2是一个 117x4 的维度列表。现在,我想一次进入 C 函数 1 行,这就是为什么我想使用testfv2[0,:].
我有一个函数,我希望该函数在运行了一定的毫秒数后停止运行。这个函数可以工作几秒钟,但我想测试它几毫秒。我该怎么做呢?如果我设置消除 = 1,它对应于 1 秒。我如何设置消除 = 5 毫秒?
功能:
void clsfy_proc(S_SNR_TARGET_SET pSonarTargetSet, unsigned char *target_num, time_t eliminate)
{
// get timing
time_t _start = time(NULL);
time_t _end = _start + eliminate;
int _eliminate = 0;
//some code
time_t start = time(NULL);
time_t end = start + eliminate;
for(_tidx = 0; _tidx < pSonarTargetSet[_i].num; _tidx++) {
// check timing
time_t _current = time(NULL);
if (_current > _end) {
printf("clsfy_proc(1), Eliminate due to timeout\n");
_eliminate = 1;
break;
}
//some code
if …Run Code Online (Sandbox Code Playgroud) 我有这两个变量C:
double predict_label = 6.0;
double prob_estimates = 8.0;
Run Code Online (Sandbox Code Playgroud)
如何将这两个变量转换C为char并打印出一个字符串,其中包含"预测标签的值为6,概率估计值为8"的字符串.