C语言/如何从一个文件读取输入并将输出写入另一个文件
我在从一个文件读取输入并将输出写入另一个文件时遇到问题 这是我的密码C语言/如何从一个文件读取输入并将输出写入另一个文件,c,C,我在从一个文件读取输入并将输出写入另一个文件时遇到问题 这是我的密码 #include <stdio.h> #include <math.h> //Variables declarations FILE *reportfile; FILE *inputfile; char ratioName[20]; char nameorganization[25]; int asset1,asset2,asset3; int lia1,lia2,lia3; float asset;
#include <stdio.h>
#include <math.h>
//Variables declarations
FILE *reportfile;
FILE *inputfile;
char ratioName[20];
char nameorganization[25];
int asset1,asset2,asset3;
int lia1,lia2,lia3;
float asset;
float liabilites;
float ratio;
int ave_asset;
int ave_liabilites;
float ave_ratio;
char year[5]
//char currentasset[15];
//char currentLia[30];
//char tekstRatio[45];
//void
void ReadingData(void);
void DoCalcs(void);
void Report(void);
int main(void) {
ReadingData();
DoCalcs();
Report();
return 0;
}
void ReadingData(void){
inputfile = fopen("c:\\class\\current.txt" , "r");
fgets(nameorganization,25, inputfile);
fscanf(inputfile,"%d%d\n", &asset1, &lia1);
fscanf(inputfile,"%d%d\n", &asset2, &lia2);
fscanf(inputfile,"%d%d", &asset3, &lia3);
fclose(inputfile);
}
void DoCalcs(void){
ratio = asset / liabilites;
ave_asset = (asset1 + asset2 + asset3) / 3;
ave_liabilites = (lia1 + lia2 + lia3) / 3;
ave_ratio = ratio / 3;
}
void Report(void){
reportfile = fopen("c:\\class\\alimbetm_cr.txt","w");
fprintf(reportfile,"\n");
fprintf(reportfile,"Current Ratio Report",ratioName);
fprintf(reportfile,"Year");
//fprintf(reportfile,"Current Asset",currentasset);
}
//void GettingInfo(void){
//printf("Please type ratio: ");
//scanf();
//}
这是它在新文件中应该如何显示的
Hi-Tech Leisure Products
Current Ratio Report
Current Current Current
Year Assets Liabilities Ratio
----------------------------------------------------------
2010 47900 31007 1.54
2011 34500 9100 3.79
2012 57984 14822 3.91
----------------------------------------------------------
Average 46795 18310 3.08
This report produced by Raul Jimenez.
请帮助在这种情况下,您需要使用
“a”
而不是“w”
,因为写入
功能用于清除旧数据并写入新数据在这种情况下,您需要使用a
而不是“w”
因为write
函数用于清除旧数据并写入新数据发布的代码不会编译!第一个问题是这种说法:
char year[5]
缺少尾随分号代码>
关于:
#include <math.h>
reportfile = fopen("c:\\class\\alimbetm_cr.txt","w");
模式w
导致输出文件被截断为0长度
因为您希望保留输出文件的旧内容,只需添加更多数据。强烈建议使用
reportfile = fopen("c:\\class\\alimbetm_cr.txt","a");
其中模式a
将以append
模式打开输出文件,以便将新数据添加到现有文件的末尾
当然,一定要检查reportfile
以确保它不为空(即调用fopen()
成功)
注意:此语句不编译:
fprintf(reportfile,"Current Ratio Report",ratioName);
因为它有一个参数,但没有匹配的“输出格式转换”说明符。建议(在本例中)删除参数:ratioName
对fopen()
和fclose()
的调用分散在整个代码中。在当前编写时,只会从输入文件读取一条记录,只会将一条记录写入输出文件。当输入文件包含多条记录时,这将是一个主要问题
“期望输出”表示第一件事应该是:“高科技休闲产品”,然后是:“当前比率报告”。然而,没有语句(在报告()
)实际输出第二条语句,并且字符数组ratioName[]
从未设置为任何特定值
“所需输出”表示两行列标题等,但没有代码实际输出这些列标题(除了年份
)。对于数据行,平均:
行,作者
行也存在类似的考虑。每行的每个数据都需要由代码专门输出,它们不会“神奇地”出现在输出文件中
关于
ratio = asset / liabilites;
无论是资产
还是负债
都未设置为任何特定值,因此它们(由于它们的声明位置)将包含0.0f的值。因此此除法将导致代码被零除的崩溃
还有很多问题,但上面的内容应该会让您从正确的方向开始。发布的代码无法编译!第一个问题是以下语句:
char year[5]
缺少尾随分号;
关于:
#include <math.h>
reportfile = fopen("c:\\class\\alimbetm_cr.txt","w");
模式w
导致输出文件被截断为0长度
由于您希望保留输出文件的旧内容,只需添加更多数据
reportfile = fopen("c:\\class\\alimbetm_cr.txt","a");
其中模式a
将以append
模式打开输出文件,以便将新数据添加到现有文件的末尾
当然,一定要检查reportfile
以确保它不为空(即调用fopen()
成功)
注意:此语句不编译:
fprintf(reportfile,"Current Ratio Report",ratioName);
因为它有一个参数,但没有匹配的“输出格式转换”说明符。建议(在本例中)删除参数:ratioName
对fopen()
和fclose()
的调用分散在整个代码中。在当前编写时,只会从输入文件读取一条记录,只会将一条记录写入输出文件。当输入文件包含多条记录时,这将是一个主要问题
“期望输出”表示第一件事应该是:“高科技休闲产品”,然后是:“当前比率报告”。然而,没有语句(在报告()
)实际输出第二条语句,并且字符数组ratioName[]
从未设置为任何特定值
“所需输出”表示两行列标题等,但没有代码实际输出这些列标题(除了年份
)。对于数据行,平均:
行,作者
行也存在类似的考虑。每行的每个数据都需要由代码专门输出,它们不会“神奇地”出现在输出文件中
关于
ratio = asset / liabilites;
无论是资产
还是负债
都未设置为任何特定值,因此它们(由于它们的声明位置)将包含0.0f的值。因此此除法将导致代码被零除的崩溃
还有很多问题,但是上面的问题应该会让你朝着正确的方向开始。你是说current.txt
被删除了吗?为什么你所有的变量都是全局的,所有的函数参数列表都是空的?与你的问题无关:但是你应该关闭输出文件。如果我理解正确,你不希望e输出文件的旧内容将被新报告覆盖,对吗?然后您需要以追加模式打开输出文件。如果这不是您要问的,请通过删除它来澄清您的问题。好的,您需要回到您的C手册,学习如何使用printf()
-族及其格式说明符。你是说current.txt
被删除了吗?为什么所有变量都是全局变量,所有函数参数列表都是无效的?与你的问题无关:但你应该关闭输出文件。如果我理解正确,你不希望输出文件的旧内容被新报告,对吗?然后你需要打开输出文件