例10.1 从键盘输入一些字符,逐个把它们送到磁盘上去,直到用户输入一个“#”为止。

解题思路:用fgetc 函数从键盘逐个输入字符,然后用fputc 函数写到磁盘文件即可。

#include 
#include 
int main()
  {FILE *fp;
   char ch,filename[10];
   printf("请输入所用的文件名:");
   scanf("%s",filename);
   if((fp=fopen(filename,"w"))==NULL)       // 打开输出文件并使fp指向此文件 
	  {
       printf("无法打开此文件\n");          // 如果打开时出错,就输出"打不开"的信息  
       exit(0);                             // 终止程序*/
       }
   ch=getchar( );                    // 此语句用来接收在执行scanf语句时最后输入的回车符  
   printf("请输入一个准备存储到磁盘的字符串(以#结束):");
   ch=getchar( );                   // 接收从键盘输入的第一个字符 
   while(ch!='#')                   // 当输入'#'时结束循环  
	{
	  fputc(ch,fp);                 // 向磁盘文件输出一个字符  
      putchar(ch);                  // 将输出的字符显示在屏幕上  
	  ch=getchar();                 // 再接收从键盘输入的一个字符  

	 }
   fclose(fp);                      // 关闭文件  
   putchar(10);                     // 向屏幕输出一个换行符,换行符的ASCII代码为10 
   return 0;
  }

例10.2 将一个磁盘文件中的信息复制到另一个磁盘文件中。 今要求将上例建立的file1.dat文件中的内容复制到另一个磁盘文件file2.dat中。
解题思路:处理此问题的算法是:从file1.dat文件中逐个读入字符,然后逐个输出到file2.dat中。

#include 
#include 
int main( )
  {FILE *in,*out;
   char  ch,infile[10],outfile[10];     // 定义两个字符数组,分别存放两个文件名  
   printf("输入读入文件的名字:");
   scanf("%s",infile);                  // 输入一个输入文件的名字  
   printf("输入输出文件的名字:");
   scanf("%s",outfile);                 // 输入一个输出文件的名字  
   if((in=fopen(infile,"r"))==NULL)     // 打开输入文件  
      {printf("无法打开此文件\n");
       exit(0);
      }
   if((out=fopen(outfile,"w"))==NULL)   // 打开输出文件  
     {printf("无法打开此文件\n");
      exit(0);
     }
   while(!feof(in))                    // 如果未遇到输入文件的结束标志  
     {ch=fgetc(in);                    // 从输入文件读入一个字符,暂放在变量ch中 
	  fputc(ch,out);                   // 将ch写到输出文件中  
      putchar(ch);                     // 将ch显示在屏幕上  
     }
   putchar(10);                        // 显示完全部字符后换行  
   fclose(in);                         // 关闭输入文件  
   fclose(out);                        // 关闭输出文件  
   return 0;
  }



你可能感兴趣的:(C/C++)