用文件操作函数实现文件复制

  int nread=0;
   char buff[100];

   while(1)
     {
    
    
        memset(buff,0,sizeof(buff));
        if((nread=fread(buff,1,100,srcfp))==0)  break;

        fwrite(buff,1,nread,dstfp);
     }

  1.一开始我自己写的程序就是没有定义

int nread;

  本来打算从源文件读100给字节,然后写100个字节进目标文件,但是这是错误的,如果从源文件读的数据没有100个字节,那么我还写入100个字节到目标文件,可能就会出错。
所以应该是读多少,写多少。这时就用到了一个计数器nread。

  2.char buff[100];
能不能改成其他的数据类型,比如

int buff[100];

  这是可以的,因为这是申请了一块内存,然后将读出来的数据块放到了这块内存中。或者说读出来的数据块是一串的0110(一串的二进制数),它可以用整型也可以用字符型。
  再者定义变量类型的本质就是向内存申请一片空间,将读取的数据放到申请的内存中,这是没有什么区别的。

  3.两种读写方式的差别的感想

  3.1fread和fwrite函数
  将文件中的内容,以二进制的形式读写

  3.2.fprintf和fgets
  将文件的内容对应的ASCII,进行读写。

  其实没有什么文本文件和二进制文件,对计算机而言都是0110这样一串串的二进制数,只不过是文件中存放的二进制是什么。是读写的数据对应的二进制数,还对应的ASCII对应的二进制数。
  如果用fgets和fprintf函数来读写,那么文件缓冲区中的就是读写数据对应ASCII对应的二进制数。
  如果用fwrite和fread函数来读写,那么就是读写的数据对应的二进制数。

猜你喜欢

转载自blog.csdn.net/qq_43403759/article/details/113102576