文件处理老是不对,为什么?
要求写一个c语言程序,一个公司运营一个路线,每天会产生有两个文件,一个叫locations.txt,
locations.txt.rar
(946 Bytes)
,文件里面是站点,站名,价钱,共有200个站点,截取其中一些记录:001;Yonge & Front, Toronto;0.00
010;Yonge & Steeles, Toronto;5.00
012;Major Mac, Richmond Hill;7.00
014;Elgin Mills, Richmond Hill;7.50
017;Stouffville Rd, Richmond Hill;8.00
020;King Rd, Vaughan;8.50
023;Bloomington Rd, Aurora;8.50
另一个文件叫tobill.txt,
tobill.txt.rar
(762.04 KB)
,里面是每天乘客乘车的刷卡信息,包括:信用卡号码,名字,上车站点,下车站点。下面是一些记录:MC1111113454321981:Ron Tarr:073:125
AX1221123423453452:Cathy Leung:020:010
VS1234567890654323:John Selmys:001:200
VS1234567890654324:Geraldine Wynne:200:010
MC1111113454321985:Rob Tarr:125:073
AX1221123423453456:Amanda Ng:012:032
要求编一个程序,生成一个名为invoiced.txt的文件,记录乘客的账单,格式为:信用卡信息,名字,上车站名,下车站名,价钱,下面是具体格式:
MC345432198 Jackie Chen Essa Rd, Barrie to Town Hall, North Bay 18.00
信用卡和名字之间有一个空格,名字和上车站名有一个空格,上车站名和下车站名用to相连,站名可能是站名+城市名,如Essa Rd, Barrie表示的站名是Barrie市的Essa Rd,下车站名和价钱有一个空格。
价钱如何计算?比如乘客在第1站上车,在第10站下车,(001;Yonge & Front, Toronto;0.00 010;Yonge & Steeles, Toronto;5.00)价钱为5元(5-0=5),如果从第10站上车,第1站上车,价钱也为5元。
下面是小弟的代码,请大侠看看,为什么运行不了。
#include<stdio.h>
main ()
{
FILE *inbill, * inprice, *charge;
char credit[20], name[20], location[200];
int stop, on, off, passenger=1, x;
double amount, totalamt, price[200];
inbill=fopen("tobill.txt", "r");
inprice=fopen("locations.txt", "r");
charge=fopen("invoiced.txt", "w");
for (x=1; x<201; x++)
{
fscanf(inprice, "%d;%[^;];%.2lf\n", &stop, location, &price[x]);
}
while (EOF != fscanf(inbill, "%[^:]:%[^:]:%d:%d\n", credit, name, &on, &off) )
{
amount=price[on]-price[off];
if (amount<0)
amount*=-1;
fprintf(charge, "%s %[A-Z a-z], %d %d %.2lf", credit, name, on, off, amount);//小弟不知道如何输出站名,只好先输出站点了,望赐教
passenger++;
totalamt+=amount;
}
fclose(inbill);
fclose(inprice);
fclose(charge);
printf("Total Number of Passengers %d\n", passenger);
printf("Total Dollars Billed %.2lf\n", totalamt);
printf("Average Fare Billed %.2lf\n", totalamt/passenger);
}
[ 本帖最后由 winglesswu 于 2013-3-29 10:16 编辑 ]