当前位置: 技术问答>linux和unix
一个C程序,高手帮我看看问题出在哪
来源: 互联网 发布时间:2016-08-25
本文导语: #include #include #include@ void main() { float n; n=loadInfo(); printf("%f",n); } float loadInfo(void) { float a,b,c; int x,y,z; FILE *fp; fp=fopen("/proc/loadavg","r"); fscanf(fp,"%f%f%f%d/%d%d",&a,&b,&c,&x,&y,&z); fclose(fp); return a; } 大家帮我看看这...
#include
#include
#include@
void main()
{
float n;
n=loadInfo();
printf("%f",n);
}
float loadInfo(void)
{
float a,b,c;
int x,y,z;
FILE *fp;
fp=fopen("/proc/loadavg","r");
fscanf(fp,"%f%f%f%d/%d%d",&a,&b,&c,&x,&y,&z);
fclose(fp);
return a;
}
大家帮我看看这个程序哪边有问题,在linux里用的,读loadavg里第一个参数,我只是想试下写个函数可以返回这个参数,这个函数不用输入,但是我发现输出的值莫名其妙,人家看看错在什么地方?我试了很多情况,主要问题就是这个函数里的值,传不出来,函数内部得到的a,b,c,都是正确的
#include
#include@
void main()
{
float n;
n=loadInfo();
printf("%f",n);
}
float loadInfo(void)
{
float a,b,c;
int x,y,z;
FILE *fp;
fp=fopen("/proc/loadavg","r");
fscanf(fp,"%f%f%f%d/%d%d",&a,&b,&c,&x,&y,&z);
fclose(fp);
return a;
}
大家帮我看看这个程序哪边有问题,在linux里用的,读loadavg里第一个参数,我只是想试下写个函数可以返回这个参数,这个函数不用输入,但是我发现输出的值莫名其妙,人家看看错在什么地方?我试了很多情况,主要问题就是这个函数里的值,传不出来,函数内部得到的a,b,c,都是正确的
|
在main之前声明loadInfo再试一下
float loadInfo(void);
或者把整个loadInfo函数移到main前面去。
float loadInfo(void);
或者把整个loadInfo函数移到main前面去。
|
楼主用的什么编译器?
我用gcc4.3.2,编译不通过:
test.c:12: error: conflicting types for loadInfo
test.c:8: error: previous implicit declaration of loadInfo was here
原因:在main里面调用loadInfo之前没有声明,所以编译器默认它是返回int。后面定义的是返回float,类型冲突。
如果“输出的值莫名其妙”,可能是在main里面按照int的格式来解释float值
我用gcc4.3.2,编译不通过:
test.c:12: error: conflicting types for loadInfo
test.c:8: error: previous implicit declaration of loadInfo was here
原因:在main里面调用loadInfo之前没有声明,所以编译器默认它是返回int。后面定义的是返回float,类型冲突。
如果“输出的值莫名其妙”,可能是在main里面按照int的格式来解释float值