Nic*_*nac 0 c program-entry-point return
我在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}`
Run Code Online (Sandbox Code Playgroud)
我的C程序看起来像
int main()
{
char output[20];
sprintf(output, "%i %i", int1, int2);
return output;
}
Run Code Online (Sandbox Code Playgroud)
AC程序不能返回整数以外的任何内容.我听过的任何操作系统上的程序或脚本都不能返回除单个整数状态代码之外的任何内容.
你是如何阅读C程序的回报的?你有机会阅读输出吗?如果是这样,你不想从main返回它,你想打印出标准输出.为此,请更换您sprintf(output, "%i %i", i1, i2)的printf("%i %i", i1, i2)