C语言程序设计(第二版)第11章例题

例11.1

#include<stdio.h>
void main()
{
   FILE * fp;
   int i=0;
   char n;
   fp=fopen("F:\\text.txt","r");
   while(!feof(fp))
   {
      fscanf(fp,"%c",&n);
      printf("%c",n);
      i++;
      if(i==10){
         printf("\n");
         i=0;
      }
   }
   fclose(fp);
}

例11.2
#include<stdio.h>
#include<stdlib.h>
void main()
{
    FILE * fp;
    int ch;
    if(!(fp=fopen("F:\\text.txt","w")))
    {
	   printf("Cannot open file d:\\text.txt!\n");
	   exit(0);
	}
	ch=getchar();
	while(ch!=EOF)
	{
	   fputc(ch,fp);
	   ch=getchar();
	}
	fclose(fp);
	return;
} 
例11.3

#include<stdio.h>
#include<stdlib.h>
void main()
{
    FILE * fp;
    int ch;
   if(!(fp=fopen("F:\\text.txt","r")))
   {
       printf("cannot open F:\\text.txt");
       exit(0);
   }
   ch=fgetc(fp);;
   while(ch!=EOF)
   {
      putchar(ch);
      ch=fgetc(fp);
   }
   fclose(fp);
   return ;
  
}
例11.4

#include<stdio.h>
#include<stdlib.h>
static void copyFile(FILE *source,FILE * intention);
static FILE * openFile(char *prompt,char * mode);
void main()
{
 FILE * source,*intention;
 printf("This program copies one file to another.\n");
 source=openFile("source:","r");
 intention=openFile("intention:","w");
 copyFile(source,intention);
 fclose(source);
 fclose(intention);
 return ;   
}
static void copyFile(FILE *source,FILE * intention)
{
   int ch;
   while((ch=getc(source))!=EOF) 
   {
   putc(ch,intention); 
   }
}
static FILE *openFile(char *prompt,char * mode)
{
    char tmpFile[20];
    FILE * reval = NULL;
    while(1)
    {
	    printf("%s",prompt);
	    gets(tmpFile);
	    reval=fopen(tmpFile,mode);
	    if(reval!=NULL)
		   break;
	    printf("Can't open the file \"%s\"\n",tmpFile);
	    exit(1);
	}
	return reval;
}
例11.5

#include<stdio.h>
#include<stdlib.h>
void main()
{
   FILE *fp1;
   int i,score;
   if(!(fp1=fopen("f:\\text.txt","w"))){    //出错处理 
   	printf("error");
   	exit(0);
   }
   for(i=0;i<10;i++)    //输入成绩 
   {
        scanf("%d",&score);
        fprintf(fp1,"%5d",score);
   }
   fclose(fp1);
   return ;
} 
例11.6

#include<stdio.h>
#include<stdlib.h>
#define N 100
void main()
{
    FILE * fp;
    int i,n,s,a[N],x;
    if(!(fp=fopen("F:\\text.txt","r")))
    {
	   printf("cannot open F:\\text.txt!\n");
	   exit(0);
	}
	n=0;
	while(!feof(fp)){
	 fscanf(fp,"%d",&x);
	 a[n]=x;
	 n++;
	}
	for(s=0,i=0;i<n;i++)
	{
	   s+=a[i];
	}
	printf("s=%d\n",s);
	fclose(fp);
} 

例11.7

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
void main()
{
    FILE * fp;
    int n1,n2,n3,n4,ch;
    n1=n2=n3=n4=0;
    if((fp=fopen("F:\\text.txt","r"))==NULL)
    {
	   printf("cannot open F:\\text.txt!\n");
	   exit(0);
	}
	while(!feof(fp))
   {
   	ch=fgetc(fp);
    if(isalpha(ch))
        n1++;
    else if(isdigit(ch))
		   n2++;
    else if(ch==' ')    
        n3++;
    else 
        n4++;
   }
   fclose(fp);
   printf("%d %d %d %d\n",n1,n2,n3,n4);
   if(fp=fopen("F:\\text.txt","a")==NULL)
   {
       printf("Error!\n");
       exit(0);
   }
   fprintf(fp,"//alpha number:%d\n",n1);
   fprintf(fp,"//digit number:%d\n",n2);
   fprintf(fp,"//space number:%d\n",n3);
   fprintf(fp,"//other:%d\n",n4);
   fclose(fp);
} 

例11.8
#include<stdio.h>
#include<stdlib.h>
struct stu{
   char numb[9];
   int s[3];
   float  ave;
};
void main()
{
   FILE * f1,* f2;
   struct stu a,b;
   int flag=1;
   if((f1=fopen("aa.txt","r"))==NULL)
   {
      printf("Error!\n");
      exit(0);
   }
   if((f2=fopen("bb.txt","w"))==NULL)
   {
      printf("Error!\n");
      exit(0);
   }
   scanf("%s%d%d%d",a.numb,&a.s[0],&a.s[1],&a.s[2]);
   a.ave=(a.s[1]+a.s[2]+a.s[0])/3.0;
   while(fscanf(f1,"%8s%4d%4d%4d%6f\n",b.numb,&b.s[0],&b.s[1],&b.s[2],&b.ave)
   !=EOF){
   if(a.ave>b.ave&&flag){
     fprintf(f2,"%8s%4d%4d%4d%6.1f\n",a.numb,a.s[0],a.s[1],a.s[2],a.ave);
     flag = 0;
   }
   fprintf(f2,"%8s%4d%4d%4d%6.1f\n",b.numb,b.s[0],b.s[1],b.s[2],b.ave);
      }
   if(flag)
     fprintf(f2,"%8s%4d%4d%4d%6.1f\n",a.numb,a.s[0],a.s[1],a.s[2],a.ave);
   fclose(f1);
   fclose(f2);
   remove("aa.txt");
   rename("bb.txt","aa.txt");
} 



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值