【问题标题】:taking input to the .c file using pyqt使用 pyqt 将输入输入到 .c 文件
【发布时间】:2013-08-03 11:29:57
【问题描述】:

我创建了一个需要输入的 c 程序(通过 scanf)。然后我创建了 .so 文件并在 python 脚本中调用它,这样当我运行脚本时,将在终端中询问输入。但是当我运行python程序时,终端挂了。

请注意
1。我的c代码

#include <stdio.h>
#include <string.h>
int open(void)
{
    char input[20];
    scanf("input = %s\n",&input);
    printf("\n%s\n","input");
}

2。我用于编译代码的命令

gcc -c usb_comm.c

3.创建.so文件

gcc -shared -o libhello.so usb_comm.o

4.python程序的相关部分
加载 .so 文件

from ctypes import cdll
mydll = cdll.LoadLibrary('/home/vineeshvs/Dropbox/wel/workspace/Atmel/libhello.so')


调用c程序中定义的函数

mydll.scanf("%c",mydll.open())

感谢收听 :)

【问题讨论】:

标签: python c python-extensions


【解决方案1】:

mydll.open() 调用scanf。为什么在 Python 中调用 scanf?

只需致电mydll.open()

mydll.open()

更新

#include <stdio.h>

void open(void)
{
    char input[20];
    printf("input = "); // If you want prompt
    scanf("%s", input);
    printf("\n%s\n", input);
}

【讨论】:

  • 我将mydll.scanf("%c",mydll.open()) 替换为mdll.open()。但是终端仍然挂起并且不要求输入
  • @vineeshvs,您对 scanf 有误解。 scanf 不提示用户。
  • 那么您建议使用哪个命令从用户那里获取输入?
  • 尝试了代码。它打印input =,然后等待输入。当我输入一些东西(例如:sdf)时,它显示以下错误No command 'sdaf' found, did you mean: Command 'sadf' from package 'sysstat' (main) Command 'sdf' from package 'sdf' (universe) sdaf: command not found [2]+ Stopped python first_program.py
  • @vineeshvs,我无法重现该错误。 See this screencast that I just created.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 1970-01-01
  • 2021-11-12
相关资源
最近更新 更多