C语言从一个文件读数据到写入另一个文件

sprintf(dsp_buf,"%02d%-20s%-15s%-8s%-5s%2s%6s%12s%06s%06s%6s%6s%12s%d\n",trans_type,f... sprintf(dsp_buf, "%02d%-20s%-15s%-8s%-5s%2s%6s%12s %06s%06s %6s %6s %12s %d\n"
, trans_type, f_card_no, merchant_no, terminal_id
, date_exp, resp_code, auth_id, amount, time_header
,stime1,sys_trace_num, invoice_v, ref_no,0);
以上是我需要读的文件的每一行的格式,我只需要merchant_no, terminal_id,amount,要求计算每个商户(merchant_no)下的每个终端(terminal_id)的交易金额(amount)。然后根据商户号写入到一个TXT文件中。注:一个商户下面可能有多个终端,要求计算出每个终端的交易金额。
一行的数据大概是这样的:
021234567890123456 104110054111335110064381212 00666666000001560000 131230121344 888888 777777 123456789012 0
展开
 我来答
zy1404
2013-12-31 · TA获得超过1387个赞
知道小有建树答主
回答量:784
采纳率:100%
帮助的人:479万
展开全部

你可以模仿者写下,atoi()//可以把字符串变成数字

//比如atoi(“1234”)=1234,下面输出的是我的文当格式

#include<iostream>

using namespace std;

void read()

{

FILE *fp;

char n1[20],n2[20],n3[20],n4[20];

int a,b,c,d;

if((fp=fopen("date.txt","r"))==NULL)

{

cout<<"can not open the file\n";

exit(0);

}

fscanf(fp,"%s\n",n1);


a=atoi(n1);//把字符串转变成数字

cout<<a<<endl;

while(!feof(fp))

{

fscanf(fp,"%s%s%s%s\n",n1,n2,n3,n4);

cout<<n1<<"    "<<n2<<"    "<<n3<<"    "<<n4<<endl;

}


}

void main()

{

read();

}

更多追问追答
追问
关键我现在需要把商户号和金额先从文件里面拿出来! 一个商户号对应一个总金额!
追答
merchant_no  和 amount是不?
格式都是sprintf(dsp_buf, "%02d%-20s%-15s%-8s%-5s%2s%6s%12s %06s%06s %6s %6s %12s %d\n" , trans_type, f_card_no, merchant_no, terminal_id , date_exp, resp_code, auth_id, amount, time_header ,stime1,sys_trace_num, invoice_v, ref_no,0);
是吗
风若远去何人留
2015-09-26 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450134
专业C/C++软件开发

向TA提问 私信TA
展开全部

可以通过fgetc函数,依次读取源文件的每个字节,再写入到目标文件,直到文件尾为止。

流程为:

1 打开文件,源文件采用读方式,目标文件采用写方式;

2 循环逐字节读取数据,并写入目标文件;

3 当遇到文件尾(EOF)时退出循环;

4 关闭文件。


写成代码为:

void file_copy(char *src, char *dst)
{
    int c;
    FILE *s = NULL,*d=NULL;
    s = fopen(src, "r");
    d = fopen(dst, "w");//打开文件。
    if(s == NULL || d == NULL)//打开文件失败。
    {
        if(s)fclose(s);
        if(d) fclose(d);
        return;
    }
    while((c = fgetc(s))!=EOF)//循环读文件到文件尾。
        fputc(c, d);//写目标文件。
    fclose(s);
    fclose(d);//关闭文件。
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
觉今是而昨非cyh
2018-05-07
知道答主
回答量:9
采纳率:100%
帮助的人:6162
引用flczzhang的回答:
可以通过fgetc函数,依次读取源文件的每个字节,再写入到目标文件,直到文件尾为止。
流程为:
1 打开文件,源文件采用读方式,目标文件采用写方式;
2 循环逐字节读取数据,并写入目标文件;
3 当遇到文件尾(EOF)时退出循环;
4 关闭文件。

写成代码为:
void file_copy(char *src, char *dst){ int c; FILE *s = NULL,*d=NULL; s = fopen(src, "r"); d = fopen(dst, "w");//打开文件。 if(s == NULL || d == NULL)//打开文件失败。 { if(s)fclose(s); if(d) fclose(d); return; } while((c = fgetc(s))!=EOF)//循环读文件到文件尾。 fputc(c, d);//写目标文件。 fclose(s); fclose(d);//关闭文件。}
展开全部
你用int型的变量能这样将文件中的内容读入到另一个文件?用char型的一个数组不好吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式