两个文件内容存储到一个文件中

问题描述:设在文件a.txt和文件b.txt中分别存有两个字符串,设计一个程序将这2个字符串按依序交叉的方式合并成一个字符串(如"aaaaa"和"bbb")的合并结果为"abababaa",而"bbb"和"aaaaa"的合并结果为"bababaa",并将结果存放文件a.txt中

feof()函数:

在stdio.h中feof的定义:

#define _IOEOF 0x0010

#define feof(_stream) ((_stream)->_flag & _IOEOF)

由此可知,只有当fp->_flag & 0x0010为真时,才认为文件结束了。在VC里,只有当file position indicator(在Windows上是fp->_ptr)到了文件末尾,然后再发生读/写操作时,fp->_flag才会被置为含有_IOEOF,然后再调用feof(),才会得到文件结束的信息,并不是file position indicator一指到文件尾,feof()就认为文件结束。

fgetc函数:

在文件处理中,通过fgetc()函数,我们从输入流中获取下一个字符,并将文件指针加1。 函数fgetc()的原型是: int fgetc(FILE * filename);

It returns an integer value which is conversion of an unsigned char. It also returns EOF which also in turns an integer value.

它返回一个整数值,该值是无符号char的转换。 它还返回EOF ,而EOF也是一个整数值

rewind()函数:
功 能: 将文件内部的位置 指针重新指向一个流( 数据流/文件)的开头
注意:不是 文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。而文件指针是指向整个文件,如果不重新赋值文件指针不会改变

 

#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE *fp,*fq,*fr;
    char ch;
    fp=fopen("C:/Users/dell/Desktop/a.txt","r+");
    fq=fopen("C:/Users/dell/Desktop/b.txt","r+");
    fr=fopen("C:/Users/dell/Desktop/c.txt","w+");
    if(fp==NULL){
        printf("cannot open file a.txt");
        exit(0);
    }
    if(fq==NULL){
        printf("cannot open file b.txt");
        exit(0);
    }
    while (!feof(fp))
    {
        ch=fgetc(fp);
        fputc(ch,fr);
        if(!feof(fq)){
            ch=fgetc(fq);
            fputc(ch,fr);
        }
    }
    while(!feof(fq)){
        ch=fgetc(fq);
        fputc(ch,fr);
    }
    rewind(fp);
    rewind(fr);
    while(!feof(fr)){
        ch=fgetc(fr);
        fputc(ch,fp);
    }
    fclose(fp);
    fclose(fq);
    fclose(fr);

    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小木猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值