【发布时间】:2014-12-11 22:50:21
【问题描述】:
我在 Windows 上从 Ruby 脚本 (Ruby 1.9.3) 调用 C 程序(二进制,由 Code:Blocks 编译),但我在将 C 程序的结果返回到脚本时遇到了困难。 我的 C 程序产生 2 个整数,我想返回给脚本,因为我不能返回两个整数,所以我把它们放在一个字符串中并返回它,但是当我运行我的脚本时,一切正常,除了程序什么都不返回.
再次阅读我的 C 程序后,我了解到当 main 定义为 int main() 时,我试图返回一个字符串。我的问题是我知道它只能是 int main() 但我需要得到这两个整数。
所以现在我的方法是将结果包装在一个字符串 (sprintf(output, "%i %i", i1, i2)) 中,然后返回 (return output),然后将该字符串存储在脚本中的一个变量中,然后将字符串截断以获得整数,这次使用 Ruby (string.split(/ /).collect!{|int| int.to_i})
我怎样才能得到我想要做的事情?
感谢您的帮助
编辑:获取我的 C 程序输出的 Ruby 行是
results = `#{my_program_path} #{some_argument}`
我的 C 程序看起来像
int main()
{
char output[20];
sprintf(output, "%i %i", int1, int2);
return output;
}
【问题讨论】:
-
您是在调用 C 程序(例如二进制可执行文件)还是 C 函数?在什么操作系统上,哪个编译器和编译标志,哪个版本的 Ruby?请显示更多代码,因此请编辑您的问题以改进它!显示一些 Ruby 调用代码和一些 C“调用”代码!
-
你试过获取C程序的stdout吗?
-
别忘了用
gcc -Wall -g编译。您的 C 代码存在严重缺陷。