【发布时间】:2017-06-11 17:39:44
【问题描述】:
我有这段代码来写一个名为Phone Bill.txt的文件
#include<stdio.h>
int main(){
FILE *file;
file=fopen("Phone Bill.txt","w");
if(file!=NULL){
fprintf(file, "Number\t\tLocal Call Chargers\tInternational Call Charges\tRoaming Charges\n");
}
double phoneNumber;
float localCharges, internationalCharges, roamingCharges;
char wantToContinue='Y';
while(wantToContinue=='Y'){
printf("Enter Phone Number: ");
scanf("%lf",&phoneNumber);
printf("Enter Local Call Charges: ");
scanf("%f",&localCharges);
printf("Enter International Call Charges: ");
scanf("%f",&internationalCharges);
printf("Enter Roaming Call Charges: ");
scanf("%f",&roamingCharges);
if (file!=NULL)
fprintf(file, "%.0lf\t%.0f\t\t\t%.0f\t\t\t\t%.0f\n",phoneNumber,localCharges,internationalCharges,roamingCharges);
printf("\n");
printf("Want to Continue Writing? (Y/N)");
scanf(" %c",&wantToContinue);
if(wantToContinue=='Y'){
wantToContinue='Y';
}else if(wantToContinue=='N'){
wantToContinue='N';
fclose(file);
}
printf("\n");
}
return 0;
}
这是Phone Bill.txt将内容写入文件后的截图:
这是我用来从Phone Bill.txt 文件中读取内容(数字)的代码:
#include<stdio.h>
int main(){
FILE *file;
char strings[200];
double phoneNumber;
float localCharges, internationalCharges, roamingCharges;
file=fopen("Phone Bill.txt","r");
if(file!=NULL){
fscanf(file,"%.0lf\t%.0f\t\t\t%.0f\t\t\t\t%.0f\n",phoneNumber,localCharges,internationalCharges,roamingCharges);
printf("%.0lf %0.f %0.f %0.f",phoneNumber,localCharges,internationalCharges,roamingCharges);
}
return 0;
}
但我的输出是:
0 0 0 0
你能告诉我为什么会出现这个错误吗???*
谢谢!
【问题讨论】:
-
您确实意识到
scanf会返回一个值 -
(除了指向目标变量外,还需要考虑文件中的第一行,其条目不是数字。)
-
这会容易得多,因为该文件已经格式化为在终端(在 Windows 中)“type 'phone bill.txt'”(在 linux 中)“cat 'phone bill.txt”。 txt'" 但是,在文件名中间放置一个空格(几乎)总是一个坏主意。