首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

简单的C程序,浮点出错。给朋友赶作业,很急该如何解决

2012-03-07 
简单的C程序,浮点出错。给朋友赶作业,很急!一段很短的C语言:TC2.0编译,cmd下运行。structcity{charname[50]

简单的C程序,浮点出错。给朋友赶作业,很急!
一段很短的C语言:   TC2.0编译,   cmd下运行。


struct   city
{
char   name[50];
char   cap[50];
double   pop;
double   gdp;
};
void   main()
{
int   num;
struct   city   vector[50];
num=creatvector(vector, "a.txt ");
getch();
getch();
getch();
}
int   creatvector(struct   city*   vector,char*   filename)
{
int   e,i;
FILE*   fp=fopen(filename, "r ");
char   t[50];
e=fscanf(fp, "%s   %s   %s   %s ",&t,&t,&t,&t);
for(i=0;e!=EOF;i++)     /*e!=EOF*/
{
                vector[i].pop=vector[i].pop+sqrt(0.0);
e=fscanf(fp, "%s   %s   %lf   %lf ",&vector[i].name,&vector[i].cap,&(vector[i].pop),&(vector[i].gdp));
printf( "%s,%s,%.0lf,%.0lf\n ",vector[i].name,vector[i].cap,vector[i].pop,vector[i].gdp);
}
fclose(fp);
return   i;
}

程序用来读取文本中   的     省份、省会、人口   和GDP,不知道为什么,读到第6行就报错。floating   point   error:domain.

文本中的数据如下:
省份                 城市                 人口                 GDP
peking                 peking                 24000000                       772000000000
shanghai                 shanghai                 17780000               1030000000000
tianjin                 tianjin                 10297200                 433800000000
chongqing                 chongqing                 31000000               348620000000
heilongjiang                 Harbin                 3300000               210900000000
Jilin                 Changchun                 7400000               193400000000
Liaoning                 Shenyang                 7200000               248300000000
Inner_Mongolia                 Hohhot                 2437900                 90000000000
Hebei                 Shijiazhuang                 9395000                 206400000000
Xinjiang                 Urumqi                 2350000               65400000000


直到长春那一行还输出正确,但是辽宁,沈阳那一行就报错了。


帮同学赶假期作业,很急。万望各位帮忙。谢谢!

------解决方案--------------------


char t[50];
e=fscanf(fp, "%s %s %s %s ",&t,&t,&t,&t);

最好用四个变量。如:
char name[50], cap[50], pop[50], gdp[50];
e=fscanf(fp, "%s %s %s %s ",&name,&cap,&pop,&gdp);

[解决办法]
回复人:ouyh12345(五岭散人) ( 五级(中级)) 信誉:100 2007-09-11 15:36:49 得分:0
?
char t[50];
e=fscanf(fp, "%s %s %s %s ",&t,&t,&t,&t);

最好用四个变量。如:
char name[50], cap[50], pop[50], gdp[50];
e=fscanf(fp, "%s %s %s %s ",&name,&cap,&pop,&gdp);
==


fscanf(fp, "%s %s %s %s ",name,cap,pop,gdp);
吧?


[解决办法]
2个问题,
一个是
char t[50];
e=fscanf(fp, "%s %s %s %s ",&t,&t,&t,&t);

最好用四个变量。如:
char name[50], cap[50], pop[50], gdp[50];
e=fscanf(fp, "%s %s %s %s ",&name,&cap,&pop,&gdp);

另一个是
e=fscanf(fp, "%s %s %lf %lf ",&vector[i].name,&vector[i].cap,&(vector[i].pop),&(vector[i].gdp));
--
e=fscanf(fp, "%s %s %lf %lf ",vector[i].name,vector[i].cap,&(vector[i].pop),&(vector[i].gdp));

[解决办法]
我运行正确阿,除了EOF不对外
[解决办法]
我在VC下面运行一切正常
[解决办法]
TC中数据大小好象不一样,
int好象是16位,会不会是这个问题?

void main()
{
int num;
struct city vector[50]; // 也可能是这里,栈是否会益处??
num=creatvector(vector, "a.txt ");
getch();
getch();
getch();
}

TC是面向以前的老机器,有些默认环境不一样。
你改为malloc试试

热点排行