让C从main返回一个字符串

时间:2014-10-16 14:14:11

标签: c return main

我在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;
}

1 个答案:

答案 0 :(得分:8)

C程序不能返回整数以外的任何内容。我听过的任何操作系统上的程序或脚本都不能返回除单个整数状态代码之外的任何内容。

您是如何阅读C程序的回报?你有机会阅读输出吗?如果是这样,你不想从main返回它,你想打印出标准输出。为此,请将sprintf(output, "%i %i", i1, i2)替换为printf("%i %i", i1, i2)