C语言 如何调用另一个程序的计算结果?急!!!!!

这是被调用程序:#include"stdio.h"floatmain(){floatt=100.5;return(t);}用它生成一个exe文件准备被下面的程序调用;然后... 这是被调用程序:

#include "stdio.h"
float main()
{
float t=100.5;
return(t);
}
用它生成一个exe文件准备被下面的程序调用;

然后是正在运行的程序:
#include "stdio.h"
#include "stdlib.h"
main()
{
float a;
a=system("H1.exe");
printf("%f\n",a);
}
为什么我得到的a不等于100.5,而是一个很小的负数,请问这个用法是否存在错误?求大家帮助,谢谢
展开
 我来答
cdkrr
推荐于2017-12-15 · TA获得超过354个赞
知道小有建树答主
回答量:355
采纳率:0%
帮助的人:342万
展开全部
你要知道system的返回值,并非H1.EXE的返回值。
在DOS下,
system()只是做一个调用其他程序的工作,只要调用成功就返回0,不成功就返回-1。
它不能得到被调用的程序的执行结果。
要得到其他程序的执行的结果,要用spawn***()这个家族的函数。

如果在linux下面
如果你想得到那个返回值可以调用WEXITSTATUS(status),其中status是system函数的返回值。

如果你非常想获取他的返回值,就使用popen函数。它返回一个FILE*,就好像读写文件一样操作它就是了,不需要另外写文件读文件。
心中风情4
2013-09-14 · TA获得超过2247个赞
知道大有可为答主
回答量:1779
采纳率:66%
帮助的人:1069万
展开全部

这种返回结果不能获得的,除非使用动态连接库dll,要想通过exe获得结果,需要将第一个程序的返回结果改为输出结果:

#include "stdio.h"
float main()
{
float t=100.5;
printf("%f", t);
return(t);
}

然后再第二个人程序中将输出重定向到一个文件,然后从文件中读入:
system("H1.exe >data.txt");


然后再从文件中读出结果(读文件代码很多,可网上找)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
林柯伊南
2013-09-14 · TA获得超过151个赞
知道答主
回答量:149
采纳率:0%
帮助的人:79.9万
展开全部
使用ungetc()这个函数,将这个程序
#include "stdio.h"
float main()
{
float t=100.5;
return(t);
}
改为:
#include <stdio.h>
float main()
{
int=100;
unget(t,stdin); //将t的值返回到输入流中,主意t为整形
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tidecao2006
2013-09-15 · TA获得超过1228个赞
知道小有建树答主
回答量:842
采纳率:0%
帮助的人:786万
展开全部
进程间通信不能直接使用a = system("H1.exe");它的返回值是这个程序执行的返回码。建议采用管道,或者共享内存。初学者学习c语言先不要纠结程序的通信问题,先学习c的基本原理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式