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,而是一个很小的负数,请问这个用法是否存在错误?求大家帮助,谢谢 展开
#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,而是一个很小的负数,请问这个用法是否存在错误?求大家帮助,谢谢 展开
4个回答
展开全部
你要知道system的返回值,并非H1.EXE的返回值。
在DOS下,
system()只是做一个调用其他程序的工作,只要调用成功就返回0,不成功就返回-1。
它不能得到被调用的程序的执行结果。
要得到其他程序的执行的结果,要用spawn***()这个家族的函数。
如果在linux下面
如果你想得到那个返回值可以调用WEXITSTATUS(status),其中status是system函数的返回值。
如果你非常想获取他的返回值,就使用popen函数。它返回一个FILE*,就好像读写文件一样操作它就是了,不需要另外写文件读文件。
在DOS下,
system()只是做一个调用其他程序的工作,只要调用成功就返回0,不成功就返回-1。
它不能得到被调用的程序的执行结果。
要得到其他程序的执行的结果,要用spawn***()这个家族的函数。
如果在linux下面
如果你想得到那个返回值可以调用WEXITSTATUS(status),其中status是system函数的返回值。
如果你非常想获取他的返回值,就使用popen函数。它返回一个FILE*,就好像读写文件一样操作它就是了,不需要另外写文件读文件。
展开全部
这种返回结果不能获得的,除非使用动态连接库dll,要想通过exe获得结果,需要将第一个程序的返回结果改为输出结果:
#include "stdio.h"
float main()
{
float t=100.5;
printf("%f", t);
return(t);
}
然后再第二个人程序中将输出重定向到一个文件,然后从文件中读入:
system("H1.exe >data.txt");
然后再从文件中读出结果(读文件代码很多,可网上找)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用ungetc()这个函数,将这个程序
#include "stdio.h"
float main()
{
float t=100.5;
return(t);
}
改为:
#include <stdio.h>
float main()
{
int=100;
unget(t,stdin); //将t的值返回到输入流中,主意t为整形
}
#include "stdio.h"
float main()
{
float t=100.5;
return(t);
}
改为:
#include <stdio.h>
float main()
{
int=100;
unget(t,stdin); //将t的值返回到输入流中,主意t为整形
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
进程间通信不能直接使用a = system("H1.exe");它的返回值是这个程序执行的返回码。建议采用管道,或者共享内存。初学者学习c语言先不要纠结程序的通信问题,先学习c的基本原理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询