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

这是被调用程序:

#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,而是一个很小的负数,请问这个用法是否存在错误?求大家帮助,谢谢

你要知道system的返回值,并非H1.EXE的返回值。
在DOS下,
system()只是做一个调用其他程序的工作,只要调用成功就返回0,不成功就返回-1。
它不能得到被调用的程序的执行结果。
要得到其他程序的执行的结果,要用spawn***()这个家族的函数。

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

如果你非常想获取他的返回值,就使用popen函数。它返回一个FILE*,就好像读写文件一样操作它就是了,不需要另外写文件读文件。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-14

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

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

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


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

第2个回答  2013-09-14
使用ungetc()这个函数,将这个程序
#include "stdio.h"
float main()
{
float t=100.5;
return(t);
}
改为:
#include <stdio.h>
float main()
{
int=100;
unget(t,stdin); //将t的值返回到输入流中,主意t为整形
}
第3个回答  2013-09-15
进程间通信不能直接使用a = system("H1.exe");它的返回值是这个程序执行的返回码。建议采用管道,或者共享内存。初学者学习c语言先不要纠结程序的通信问题,先学习c的基本原理。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网