C语言每日一题之No.12

    文件操作知识:如何将一个文件的内容读取到另一个文件里?

 fread函数和fwrite函数

 

1.函数功能

  用来读写一个数据块。

2.一般调用形式

  fread(buffer,count,size,fp);

  fwrite(buffer,count,size,,fp);

3.说明

  (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。

  (2)size:要读写的字节数;

  (3)count:要进行读写多少个size字节的数据项;

  (4)fp:文件型指针。

 注意: 1 )完成次写操(fwrite())作后必须关闭流(fclose());

           2 )完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE * fp)自动向后移动前一次读写的长度,不关闭流继续下一次读操作则接着上次的输出继续输出;

           3 ) fprintf() : 按格式输入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, ...]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了。注意的是返回值为此次操作写入到文件的字节数。如int c = fprintf(fp, "%s %s %d %f", str1,str2, a, b) ;str1:10字节;str2: 10字节;a:2字节;b:8字节,c为33,因为写入时不同的数据间自动加入一个空格。

        以下FileRead.txt文件里文本内容“Hello to my programmer world!”。程序将FileRead.txt里的内容读到FileWrite.txt里。如果FileWrite.txt文件不存在则报错,如果存在就确实为“Hello to my programmer world!”。

       

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 
 5 int read_to_write()
 6 {
 7     FILE* fpr;
 8     FILE* fpw;
 9     int i= 0;
10     char buff[100]={0};
11 
12     if((fpr=fopen("e:\FileRead.txt","r"))==0)
13     {
14        printf("open failed!
");
15        return 0;  
16     
17     }
18 
19     fpw = fopen("e:\FileWrite.txt","w");
20     for(i=0;i<1024;i++)
21        fread(&buff[i],1,1,fpr);
22     for(i=0;i<1024;i++)
23        fwrite(&buff[i],1,1,fpw);
24     fclose(fpr);
25     fclose(fpw);
26 
27     return 0;
28 
29 }
30 
31 int main()
32 {
33    read_to_write();
34    return 0;
35 
36 
37 }

 运行结果:

   要么是open file failed!

   要么FileWrite.txt文件里的内容为“Hello to my programmer world!”

 疑惑:fopen里的“W”不是以新建方式打开文件吗?为什么还会报错?

原文地址:https://www.cnblogs.com/TTTTT/p/3781101.html